如何防止片段在活动重新创建时触发onCreate& onCreateView

时间:2013-03-20 14:09:04

标签: android android-fragments android-activity android-lifecycle activity-lifecycle

所以我有活动A,B,C App流程为A-> B-> C

A,B与登录功能相关联,只启动一次即可登录。 整个应用程序在C活动中。当用户使用C时,A,B是活着的。一切正常。

现在..

我杀了app的PID。然后从任务管理器中选择它。

A未启动,B未启动,C-> onCreate(非空)触发。

我可以通过检查是否存在A或B的实例来检测这种情况。 所以现在我知道这个特定情况已经发生我想重新启动应用程序 - >活动A,所以它是一个新的发布。

问题是在onCraete(非空)

内重新启动应用程序 活动C中的onCreate(非null)中的

我这样做:

if (A==null or B==null)
finish;
return;

然后在活动B中相同。这有效,C和B完成,A弹出... 但在此期间......

碎片onCreate&&调用C onDestroy之前的onCreateView fire。因为我在活动C中有很多片段,这会造成应用程序崩溃。

所以,我的问题是。有没有办法在活动C onCreate(非空)(或甚至在C onCreate之外;在清单?中)强制应用程序重启,以便片段onCreate&不调用onCreateView吗?

P.S:我在清单中尝试过clearTaskonLaunch,但即使我暂停/恢复屏幕,也会强制重启应用程序。

任何建议都会有所帮助

1 个答案:

答案 0 :(得分:0)

我有一个非常相似的情景。似乎向基类location.protocol发送null值可防止碎片重新加载。这是我的基本Activity类的代码片段(它在C#Xamarin.Android中,但很容易理解):

OnCreate