これが私の問題です。アプリケーションに複数のアクティビティがあり、そのうちの2つは少し「特別」です。アクティビティAはホームタイプのアクティビティであり、他のアクティビティを起動するために使用されます。また、バックグラウンドから更新できる他の情報も保持しています(onNewIntentを使用)。マニフェストで、私はそれをsingleTopとして宣言しました。結果に対して他のアクティビティを開始するため、singleTaskまたはInstanceにすることはできません(startActivityForResultはそれらで機能しません)。アクティビティBはスタンドアロンのアクティビティであり、特定のイベントで起動され、singleTopとしても宣言されます。また、結果を得るために他のアクティビティを開始し、onNewIntentも使用します。対応するアクティビティにリンクされている2つの個別の通知があります。私は両方に使用しています
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
通常のフローは次のとおりです。
- Aが実行されています
- 何かが起こります-Bが起動されます
- ユーザーがホームボタンを押すと、AとBの2つの通知があります
そして問題:ユーザーがAの通知を押すと、Aは起動されますが、その後ユーザーがBの通知を押すと、Bは強制終了されます(アクティビティは停止していますが、古いインスタンスが必要です)
私はこの記事を読みました-http ://developer.android.com/guide/components/tasks-and-back-stack.html 私の理解では、FLAG_ACTIVITY_NEW_TASKは別々のタスクでアクティビティを起動する必要があり、FLAG_ACTIVITY_CLEAR_TOPはこの場合Bを殺すべきではありません。
回避策は、ロジックを作り直し、それらをsingleTasksにして、onNewIntentの他のアクティビティからの結果を処理することですが、別の解決策が可能な場合は、この方法を使用しないことをお勧めします。私も試しました
FLAG_ACTIVITY_REORDER_TO_FRONT | FLAG_ACTIVITY_SINGLE_TOP
と
FLAG_ACTIVITY_MULTIPLE_TASK | FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_SINGLE_TOP | FLAG_ACTIVITY_CLEAR_TOP
Bを起動しますが、どちらも機能しません。