【问题标题】:Detach Fragment when Activity gets recreated重新创建 Activity 时分离 Fragment
【发布时间】:2022-10-19 14:38:05
【问题描述】:

当由于配置更改或内存问题而在堆栈中(返回到活动堆栈)时重新创建活动时,附加的片段也会重新创建。

就我而言,无法重新创建片段,因为它链接到一些无法在生命周期方法上简单地重新分配(重构)的不可序列化数据。因此,应用程序由于片段中的未初始化属性而崩溃。

存在此问题的 Fragment 是一个 DialogFragment,可以简单地忽略和关闭,而不是重新创建并再次显示。如果活动被破坏,我该如何删除片段?

【问题讨论】:

  • “无法重新创建片段,因为它链接到一些不可序列化的数据”——将这些数据保存在配置更改后仍然存在的东西中,例如 Jetpack ViewModel 或存储库单例。
  • 这不是问题,我想避免重新创建它。如果由于内存情况,ViewModel 无法在重新创建的 Activity 中存活,Singleton 不是一个好方法,因为引用的对象甚至不再相关。

标签: android android-fragments android-lifecycle android-dialogfragment fragment-lifecycle


【解决方案1】:

我所做的是在活动被销毁之前手动从活动中删除片段(如果找到)。这仅对我有用,因为片段是一个对话框,我不在乎它是否无法恢复。

我找不到任何其他方法可以通过简单的配置自动分离它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多