如何在活动的 onSaveInstanceState() 之后杀死所有打开的片段

Posted

技术标签:

【中文标题】如何在活动的 onSaveInstanceState() 之后杀死所有打开的片段【英文标题】:How to kill all open fragments after onSaveInstanceState() of activity 【发布时间】:2021-05-25 01:23:42 【问题描述】:

我在我的应用程序中使用一个活动多片段架构。我知道当系统在后台杀死应用程序时,如果应用程序被带到前台,那么活动和所有打开的片段都会被重新创建。当片段被重新创建时,我在某些地方收到空指针异常和空值调用 api。

现在我只想在活动内存被清除时杀死所有片段。并从初始屏幕重新启动整个应用程序流程。如果我尝试删除片段并提交,那么我将无法这样做,因为它是异步的,并且在 onSaveInstanceState() 之后无法完成。如果我尝试执行 conmitAllowingStateLoss 那么它不会清除所有片段它只是停止片段重新创建。

如何清除 onSaveInstanceState() 调用中的所有片段?

【问题讨论】:

【参考方案1】:

有几种不同的方法可以做到这一点,具体取决于您的具体需求。最简单的方法是将其添加到应用的根 Activity<activity> 声明中(具有 ACTION=MAIN 和 CATEGORY=LAUNCHER 的应用):

android:clearTaskOnLaunch="true"

【讨论】:

以上是关于如何在活动的 onSaveInstanceState() 之后杀死所有打开的片段的主要内容,如果未能解决你的问题,请参考以下文章

如何在前面加载覆盖的透明活动时保持活动加载?

如何在从通知(活动2)启动的活动后启动MainActivity(活动1)在后台销毁

如何在活动形式非活动类中调用方法

如何在活动和片段之间传递对象

如何返回之前的活动?

如何在没有活动旋转的情况下旋转活动内的片段?