質問の短いバージョン: 私のアクティビティが 2 番目のアクティビティを開始するときに 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>
アクティビティでは、2 番目のアクティビティを開始できます。
Intent LaunchIntent = main_fa.getPackageManager().getLaunchIntentForPackage("de.myhost.calendar");
main_fa.startActivity(LaunchIntent);
この新しいアクティビティには、上記のインテント フィルターからのホスト host="myhost.de" とのリンクが存在する場合があります。今、私は次のことを行います:
最初のアクティビティから 2 番目のアクティビティを開始します。最初の実行のライフサイクル: ON STOP 2 番目のアクティビティを閉じると、最初のアクティビティは ON RESUME になります。
ここまでは順調ですが、2 番目のアクティビティでリンクをクリックすると、最初のアクティビティがいくつかのパラメータで始まり、ライフサイクルを実行します: ON CREATE (ON DESTROY を実行せずに)
しかし、今、2 番目のアクティビティを 2 回目に開始すると、最初のアクティビティが実行されます: ON STOP ON DESTROY
2番目のものを(リンクを使用せずに)閉じると、破棄されたアクティビティを再開できないため、最初のものはON RESUMEを実行してクラッシュします...
なぜそれが起こったのか、これを回避する方法は?