Реагирует на собственный жизненный цикл и перезапускает
Во-первых, извинения за слегка открытые вопросы, но я не могу найти информацию, которую я ищу в других вопросах.
Я пытаюсь понять жизненный цикл приложения RN на iOS и Android. Я понимаю, что приложение загружается при первом запуске и продолжает работать, пока телефон жив, но что произойдет, когда пользователь переключится на другое приложение и вернется, или его экран отключится, а затем снова включит его? Было бы очень неприятно, если бы приложение перезапустилось только потому, что они ненадолго переключились, чтобы проверить свою электронную почту.
Мой конкретный вариант использования (не особенно важный для этого общего вопроса, но включенный для контекста) состоит в том, что я пытаюсь создать игру с соединениями socket.io, и мне интересно, могу ли я подключиться к событиям, чтобы увидеть, было ли приложение на заднем плане или если мне даже нужно. Я нашел способ принудительного перезапуска, который может быть необходим в некоторых моментах, но я бы предпочел просто попытаться восстановить соединения, которые отключились, если я смогу узнать, когда это произойдет.
Любой толчок в правильном направлении будет приветствоваться.
1 ответ
Приложение не перезапускается, когда оно идет в фоновом режиме, как вы описали. Приложение сохраняет свое состояние, и пользователь видит последний экран, который они посетили.
Вы должны взглянуть на AppState реагировать нативной https://facebook.github.io/react-native/docs/appstate
Используя AppState, вы можете добавить EventListeners, которые фиксируют изменение состояния приложения, как при переходе в фоновый режим.
Конечно, здесь также есть некоторые проблемы...
- Вы не можете захватить событие "убить". Вы можете только определить, отправлено ли приложение в фоновый режим, но, к сожалению, вы не можете определить, когда пользователь выбирает "убить" приложение.
- Вы не можете запустить любой код, пока ваше приложение находится в фоновом режиме. Это может быть серьезно в вашем случае, но вы должны оценить это. Например, если у вас есть таймер, и вы отправили приложение в фоновый режим, таймер останавливается.