当一个片段的活动经历一个 onCreate/Destroy 循环时,如何最好地将数据保留在片段中?
在我们的设置中,我们可能会将大型列表从我们的服务器加载到片段自定义列表适配器中,我们希望通过不让它们在轮换时重新加载来平滑用户体验。我们在设置片段 retainInstance=true; 时遇到的问题;是我们的适配器引用了原始活动的上下文,因此会泄漏内存。我们可以将数据存储在片段中并重新创建适配器吗?如果是这样,那真的是正确的做法吗?
下一个想法是将数据存储到会话单例对象中并在轮换后检索,这会带来一些陈旧数据的问题,但我们可以轻松克服。
我看到的另一种选择,似乎是*最佳解决方案,是将数据保存到一个包中,并在旋转后恢复到新片段中;但是,我们有相当多的对象需要在整个应用程序中存储,并且我们的一些对象很复杂,包含列表、多种类型,并且很难打包。有没有更好的解决方案,还是我们必须硬着头皮让它们可包裹?