Google은 redux-persist를 사용하여 탐색 상태를 비롯하여 앱 상태를 저장하는 React Native 앱을 제작하고 있습니다. 이 앱이 내비게이션이라는 측면에서 기본 앱처럼 작동하고 싶습니다.React Native, Android 라이프 사이클 및 탐색
기본 Android 앱이 백그라운드로 들어가고 결국 OS에 의해 중단 된 다음 포 그라운드로 이동하면 사용자가 이전에 중단했던 활동. 사용자가 동일한 앱을 죽인 경우 (또는 충돌) 메인 활동에서 열립니다.
RN 앱의 경우 앱이 사용자에 의해 종료되지 않은 경우에만 redux-persist가 지속되어 앱의 componentWillMount에서 탐색 상태를 복원해야 함을 의미합니다.
componentWillMount() {
if (global.isRelaunch) {
// purge redux-persist navigation state
}
global.isRelaunch = true;
...
을하지만 hackish 보이는 전역이 남아 이유도 이해가 안 :
다음 코드는 작동합니다.
RN 앱이 백그라운드에서 다시 열렸는지 여부를 감지하는 적절한 방법은 무엇입니까? 당신은 react-native
수표로이 예제를 제공하는 API 인 AppState에 살펴 보셔야합니다
나는 AppState와 여기에 도움이 될 것입니다 표시되지 않습니다. 이 코드를 사용하여 앱이 백그라운드에서 다시 열렸는지 확인하려면 어떻게해야합니까? Android가 백그라운드에서 앱을 죽이고 사용자가 다시 열면 다음과 같이 진행됩니다. '_handleAppStateChange'가 실행되고'nextAppState'는'활성 상태입니다. ' 그러나 'this.state.appState'는 정의되지 않았습니다 (앱이 종료 되었기 때문에). 앱이 처음부터 시작되면 똑같은 일이 발생합니다. –
당신은 당신의 질문에 대답하고 있습니다. 이전 상태가 백그라운드 또는 비활성 상태 였고 이제는 포 그라운드로 전환되면 natigation 상태를 재설정해야합니다. 이전 버전이 정의되지 않은 경우 앱이 종료되어 처음부터 시작합니다 (누가 문제가되지는 않습니다) – sfratini
누가 프로세스를 죽였는 지 문제가됩니다! 사용자가 명시 적으로 앱을 죽인 경우 탐색 상태를 재설정하고 싶습니다. 하지만 안드로이드 OS가 프로세스를 죽이면 상태를 재설정하고 싶지 않습니다. 네이티브 앱에서는 savedInstanceState를 사용하여이 경우 상태를 복원합니다. –