0

質問の短いバージョン: 私のアクティビティが 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を実行してクラッシュします...

なぜそれが起こったのか、これを回避する方法は?

4

0 に答える 0