【发布时间】:2022-10-19 14:38:05
【问题描述】:
当由于配置更改或内存问题而在堆栈中(返回到活动堆栈)时重新创建活动时,附加的片段也会重新创建。
就我而言,无法重新创建片段,因为它链接到一些无法在生命周期方法上简单地重新分配(重构)的不可序列化数据。因此,应用程序由于片段中的未初始化属性而崩溃。
存在此问题的 Fragment 是一个 DialogFragment,可以简单地忽略和关闭,而不是重新创建并再次显示。如果活动被破坏,我该如何删除片段?
【问题讨论】:
-
“无法重新创建片段,因为它链接到一些不可序列化的数据”——将这些数据保存在配置更改后仍然存在的东西中,例如 Jetpack
ViewModel或存储库单例。 -
这不是问题,我想避免重新创建它。如果由于内存情况,ViewModel 无法在重新创建的 Activity 中存活,Singleton 不是一个好方法,因为引用的对象甚至不再相关。
标签: android android-fragments android-lifecycle android-dialogfragment fragment-lifecycle