当 Android 应用程序被发送到后台时,它可以保留其实例状态,以防由于内存不足而被杀死(请参阅活动:onSaveInstanceState() https://developer.android.com/reference/android/app/Activity.html#onSaveInstanceState(android.os.Bundle)和捆绑参数活动:onCreate(捆绑保存实例状态) https://developer.android.com/reference/android/app/Activity.html#onCreate(android.os.Bundle)).
默认的 Activity 行为是保存视图层次结构的状态,因此在很多情况下,您不必编写任何代码,它“就可以工作”[tm]。
现在对于反应本机来说,这是不正确的。 React Native 应用程序托管在单个 MainActivity 中,其状态包含在应用程序中的 javascript 解释器中。
我创建了一个示例存储库,其中包含简短的文档,如何在此处重现我的问题:https://github.com/einvalentin/react-native-state-test https://github.com/einvalentin/react-native-state-test
我希望react-native能够挂钩原生android应用程序状态序列化机制,同时为应用程序开发人员提供挂钩以在需要自定义序列化时进行扩展。或者,我可以看到自己扩展 MainActivity 以将生命周期事件转发到 Javascript 层,并在那里手动执行一些自定义状态序列化 - 但这感觉有点笨拙。
有没有一种我忽略的明显方法可以将状态保存在react-native中,以便在后台被杀死的应用程序不会从头开始重新启动?例如,在与应用程序交互时接到电话的低内存设备上,这种情况总是可能发生。
多谢!
如果您使用 Redux 进行状态管理,您可能应该使用还原-持久化 https://github.com/rt2zz/redux-persist。如果没有,您有几种不同的选择:
- 异步存储 https://facebook.github.io/react-native/docs/asyncstorage.html
- 领域反应本机 https://realm.io/news/introducing-realm-react-native/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)