如何在 Fragment 的 onCreate/Destroy 生命周期中最好地保留数据,例如从旋转中恢复?
在我们的设置中,可能会将从服务器加载到片段自定义列表适配器中的大型列表平滑地展示给用户体验,以避免在旋转时重新加载它们。使用 `fragment retainInstance=true` 时的问题在于适配器有一个对原始活动上下文的引用,因此可能会导致内存泄漏。我们能否只存储数据在 Fragment 中并重新创建适配器?如果可以,那是否是正确的做法?
下一个想法是将数据存储到会话单例对象中,在旋转后检索数据,这样可能会出现一些过时的数据问题,但很容易克服。
我看到的另一种替代方案似乎是最佳解决方案,即将数据保存到 Bundle 中,并在旋转后恢复到新的 Fragment 中。但是,我们有很多需要在整个应用程序中存储的对象,其中一些对象比较复杂,包含列表、多种类型,而且可能难以进行 parcelable 序列化。是否有更好的解决方案,或者我们必须接受它们是 Parcelable 对象的事实?
在我们的设置中,可能会将从服务器加载到片段自定义列表适配器中的大型列表平滑地展示给用户体验,以避免在旋转时重新加载它们。使用 `fragment retainInstance=true` 时的问题在于适配器有一个对原始活动上下文的引用,因此可能会导致内存泄漏。我们能否只存储数据在 Fragment 中并重新创建适配器?如果可以,那是否是正确的做法?
下一个想法是将数据存储到会话单例对象中,在旋转后检索数据,这样可能会出现一些过时的数据问题,但很容易克服。
我看到的另一种替代方案似乎是最佳解决方案,即将数据保存到 Bundle 中,并在旋转后恢复到新的 Fragment 中。但是,我们有很多需要在整个应用程序中存储的对象,其中一些对象比较复杂,包含列表、多种类型,而且可能难以进行 parcelable 序列化。是否有更好的解决方案,或者我们必须接受它们是 Parcelable 对象的事实?