问题的简短版本:我的活动如何在开始第二个活动时执行 OnDestroy,然后在关闭新活动(并崩溃)后执行 OnResume
我的应用程序的生命周期中有一个非常令人困惑的行为,它有点复杂,但事实如下:
它是一个带有以下意图过滤器的片段活动:
<intent-filter>
<data android:scheme="http" android:host="myhost.de"></data>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
在活动中,我可以开始第二个活动:
Intent LaunchIntent = main_fa.getPackageManager().getLaunchIntentForPackage("de.myhost.calendar");
main_fa.startActivity(LaunchIntent);
在这个新的 Activity 中,可能存在与来自上述意图过滤器的主机 host="myhost.de" 的链接。现在我执行以下操作:
我从第一个活动开始第二个活动,第一个执行的生命周期:ON STOP 如果我关闭第二个活动,我的第一个活动:ON RESUME
到目前为止一切都很好,但是如果我单击第二个活动中的链接,第一个活动会从几个参数开始并执行生命周期:ON CREATE(不做任何 ON DESTROY)
但是现在,如果我第二次开始第二个活动,我的第一个活动执行:ON STOP ON DESTROY
如果我关闭第二个(不使用链接)我的第一个将执行 ON RESUME 并崩溃,因为beeing无法恢复被破坏的活动......
为什么会发生这种情况以及如何避免这种情况?