到目前为止,我只是将所有内容,包括非视图成员,放在onSaveInstanceState()
中的包中,并在onRestoreInstanceState()
中检索它。但我觉得以这种方式持久化非视图数据并不是正确的做法。
我的应用程序中有6个自定义非视图对象的数组列表,所有这些对象都可以变得相当大。每次在屏幕旋转时序列化/反序列化它们现在都会导致明显的延迟。我在想,有没有其他方法可以做到这一点,我错过了?
发布于 2014-05-27 02:12:26
对于配置更改(例如轮换),有另一种解决方案。您可以在onRetainNonConfigurationInstance()
中返回对象(或者,也可以在setRetainInstance(true)
中使用片段)。
与onSaveInstanceState()
不同的是,这个对象是而不是序列化的,而只是传递给“is is",所以没有性能影响。
onSaveInstanceState() / onCreate(Bundle savedInstanceState)
机制主要用于在应用程序被系统终止(例如,由于内存不足)然后重新启动时恢复状态。在这种情况下,更高的延迟是合理的。
https://stackoverflow.com/questions/23875432
复制相似问题