处理方向更改的大型列表数据集的最佳方法是什么?

时间:2013-07-23 20:00:31

标签: android list dataset android-orientation

我在类似Twitter的应用程序中为我的基本适配器设置了一个非常大的数据集,它由自定义模型(带有嵌套引用)组成,这些模型本身非常大。

我遇到的问题是,当在方向更改上重新创建活动时,列表填充速度很慢(我目前通过onSaveInstanceState传递数据集)

我已经考虑改变我序列化模型的方式(目前使用Kryo加快了保存到磁盘方面),缓存到磁盘并在onCreate中重新加载,使用setRetainInstance(true)列表片段,我也尝试在父Activity中处理配置更改。

虽然后者是最快的,但它也是我想要采用的最后一个选项,因为处理方向有很多缺点,也意味着必须重新编写代码块。

我的问题是,在方向上处理适配器重新填充的最佳做法是什么?

序列化列表以通过onSaveInstanceState

时,我可以预见到OOM错误

修改:可能重复Best way to persist data between orientation changes in Android

2 个答案:

答案 0 :(得分:0)

您不应将所有数据加载到列表视图中,只应加载必要的部分。看看这样的事情:https://github.com/commonsguy/cwac-endless

修改 您还可以使用像RoboSpice(https://github.com/octo-online/robospice)这样的库来为您处理数据缓存,这将大大减少延迟。

答案 1 :(得分:0)

其中一个选项是避免在方向更改时重新创建活动: 为此,在app manifest set configChangesAttribute中就像这样

<activity android:name=".MainActivity"
          android:label="@string/activity_title"
          android:configChanges="keyboardHidden|orientation|screenSize">