如何在 react-native 中为 android 应用程序在后台杀死的状态保留状态

How do I persist state for android apps killed in the background in react-native

当 Android 应用程序被发送到后台时,它可以保留其实例状态,以防它因内存不足而被杀死(参见 Activity:onSaveInstanceState() and the bundle argument for Activity:onCreate(Bundle savedInstanceState))。

默认 Activity 行为是保存视图层次结构的状态,因此在很多情况下您不必编写任何代码,它 "just works"[tm].

现在对于 react-native 这不是真的。 React 本机应用程序托管在单个 MainActivity 中,它们的状态包含在应用程序的 javascript 解释器中。

我创建了一个示例存储库,其中包含如何在此处重现我的问题的简短文档:https://github.com/einvalentin/react-native-state-test

我希望 react-native 能够挂接到本机 android 应用程序状态序列化机制,同时为应用程序开发人员提供挂钩以在需要自定义序列化时进行扩展。或者我可以看到自己扩展 MainActivity 以将生命周期事件转发到 Javascript 层并在那里手动执行一些自定义状态序列化 - 但这感觉有点笨拙。

有没有一种明显的方法我忽略了在 react-native 中保存状态,这样在后台被杀死的应用程序就不会从头开始重新启动?例如,在与您的应用交互时收到 phone 调用的低内存设备总是会发生这种情况。

非常感谢!

如果您使用 Redux 进行状态管理,您可能应该使用 redux-persist。如果不是,您有几个不同的选择: