airbnb / native-navigation

Native navigation library for React Native applications
http://airbnb.io/native-navigation/
MIT License
3.13k stars 177 forks source link

[Android] Restore back stack when Activity is destroyed #161

Open lucas-tulio opened 6 years ago

lucas-tulio commented 6 years ago

A common problem with apps that are using this lib is that they lose their navigation stack after their ReactActivity is closed. Besides the inconvenience, one major problem of this behavior is that pushing back when reopening an app after the user has navigated away from the first screen causes a crash, since the app no longer knows which Fragment to go back to.

The problem presents itself if the user has Don't keep activities turned on or the Activity is otherwise killed.

This PR adds a feature to restore our navigation stack in those situations.

It works by tagging each Fragment we navigate to with the total size of the back stack. That way, when your ScreenCoordinator is instanced, we recreate the Fragment stack in the same order they were initially made. The result is that the app now has every Fragment in the Activity stack and can safely navigate back to them.