Реагировать на собственный жизненный цикл и перезапускать - PullRequest
0 голосов
/ 07 сентября 2018

Во-первых, извинения за слегка открытые вопросы, но я не могу найти информацию, которую я ищу, в других вопросах.

Я пытаюсь понять жизненный цикл приложения RN на iOS и Android. Я понимаю, что приложение загружается при первом запуске и продолжает работать, пока телефон активен, но что произойдет, когда пользователь переключится на другое приложение и вернется, или его экран отключится, а затем снова включит его? Было бы очень неприятно, если бы приложение перезапустилось только потому, что они ненадолго переключились, чтобы проверить свою электронную почту.

Мой конкретный вариант использования (не особенно важный для этого общего вопроса, но включенный для контекста) заключается в том, что я пытаюсь создать игру с соединениями socket.io, и мне интересно, могу ли я подключиться к событиям, чтобы увидеть, если приложение было в фоновом режиме или, если мне даже нужно. Я нашел способ принудительного перезапуска, который может быть необходим в некоторых моментах, но я бы предпочел просто попытаться восстановить соединение, которое было отключено, если я смогу узнать, когда это произойдет.

Любой толчок в правильном направлении приветствуется.

1 Ответ

0 голосов
/ 07 сентября 2018

Приложение не перезапускается, когда оно идет в фоновом режиме, как вы описали. Приложение сохраняет свое состояние, и пользователь видит последний экран, который они посетили.

Вы должны взглянуть на AppState реагировать натива https://facebook.github.io/react-native/docs/appstate

Используя AppState, вы можете добавитьEventListeners, которые фиксируют изменение состояния приложения, как при переходе в фоновый режим.

Конечно, здесь тоже есть некоторые проблемы ...

  1. Вы не можете захватить событие "kill" . Вы можете только определить, отправлено ли приложение в фоновый режим, но, к сожалению, вы не можете определить, когда пользователь выбирает «убить» приложение
  2. Вы не можете запустить любой код, пока ваше приложение находится в фоновом режиме . Это может быть серьезно в вашем случае, но вы должны оценить это. Например, если у вас есть таймер, и вы отправили приложение в фоновый режим, таймер останавливается.
...