我在类似Twitter的应用程序中为我的基本适配器设置了一个非常大的数据集,它由自定义模型(带有嵌套引用)组成,这些模型本身非常大。
我遇到的问题是,当在方向更改上重新创建活动时,列表填充速度很慢(我目前通过onSaveInstanceState
传递数据集)
我已经考虑改变我序列化模型的方式(目前使用Kryo加快了保存到磁盘方面),缓存到磁盘并在onCreate
中重新加载,使用setRetainInstance(true)
列表片段,我也尝试在父Activity中处理配置更改。
虽然后者是最快的,但它也是我想要采用的最后一个选项,因为处理方向有很多缺点,也意味着必须重新编写代码块。
我的问题是,在方向上处理适配器重新填充的最佳做法是什么?
序列化列表以通过onSaveInstanceState
修改:可能重复Best way to persist data between orientation changes in Android
答案 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">