【问题标题】:Android - best way to persist large arraylist across runtime changesAndroid - 在运行时更改中持久保存大型数组列表的最佳方式
【发布时间】:2014-05-26 17:51:56
【问题描述】:

到目前为止,我只是将所有内容(包括非视图成员)放入 onSaveInstanceState() 的捆绑包中,然后在 onRestoreInstanceState() 中检索它。但我觉得以这种方式持久化非视图数据的方式并不正确。

我的应用程序中有 6 个自定义非视图对象的数组列表,它们都可以变得相当大。每次在屏幕旋转时对它们进行序列化/反序列化现在都会导致明显的延迟。我想知道是否还有其他我想念的方法?

【问题讨论】:

    标签: android performance arraylist


    【解决方案1】:

    对于配置更改(例如轮换),有一个替代解决方案。您可以在onRetainNonConfigurationInstance() 中返回一个对象(或者,使用带有setRetainInstance(true) 的片段)。

    onSaveInstanceState()不同,这个对象没有序列化,只是传递了“at is”,所以不会影响性能。

    onSaveInstanceState() / onCreate(Bundle savedInstanceState) 机制主要用于恢复应用程序被系统杀死(例如由于内存不足)然后重新启动时的状态。在这种情况下,更高的延迟是合理的。

    【讨论】:

    • 同意。在配置更改之间保留大量位图时,我必须做同样的事情。刚刚创建了一个片段来存储位图并让它保留它的实例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    • 2018-07-27
    • 1970-01-01
    • 2011-03-25
    相关资源
    最近更新 更多