直到现在,我只是将所有内容(包括非查看成员)放入onSaveInstanceState()
的捆绑包中,然后在onRestoreInstanceState()
中将其检索回来。但我觉得通过这种方式持久存储非视图数据我并没有以正确的方式做到这一点。
我的应用程序中有6个自定义非视图对象的arraylists,所有这些都可以变得非常大。每次在屏幕旋转时序列化/反序列化它们现在导致明显的延迟。我想知道是否还有其他方法可以解决这个问题?
答案 0 :(得分:1)
对于配置更改(例如轮换),有另一种解决方案。您可以在onRetainNonConfigurationInstance()
中返回一个对象(或者,使用带有setRetainInstance(true)
的片段)。
与onSaveInstanceState()
不同,此对象不序列化,但刚刚传递" at",因此没有性能影响。
onSaveInstanceState() / onCreate(Bundle savedInstanceState)
机制主要用于在应用程序被系统杀死时恢复状态(例如由于内存不足),然后重新启动。在这种情况下,更高的延迟是合理的。