バックグラウンド
次のシーンを見てみましょう:
- ユーザーは、複数のアクティビティを持つアプリ X (gmail アプリなど) を使用します。
- アプリ X を少しナビゲートした後、彼はあなたのアプリに移動します。
- アプリでは、インテントを使用してこの X アプリを開始し、その中の特定のアクティビティに移動する必要があります。
- ユーザーはアプリ X でこの特定のアクティビティに移動します。
- ユーザーは、アプリ X にとどまるのではなく、アプリに戻ることを望んで、戻るボタンを押します。
別の同様のシナリオ:
- ユーザーはアクティビティ間でアプリをナビゲートします。
- アプリがバックグラウンドになりました (たとえば、ホーム ボタンを使用)。
- アプリは、クリックするとアプリの特定のアクティビティを開くという通知を表示します。
- ユーザーが通知をクリックすると、アプリの特定のアクティビティに移動します。
- ユーザーは、最後にアプリを離れたときに表示されたアプリの前のアクティビティに移動するのではなく、通知をクリックする前に表示されていたアプリに戻ることを望んで、戻るボタンを押します。
両方のシナリオの最後の手順は、既定の動作ではないようです。
これが、この目的に最適なフラグの組み合わせを検索した理由です。
問題
私が説明した動作を実現できる唯一のフラグはIntent.FLAG_ACTIVITY_MULTIPLE_TASK ( Intent.FLAG_ACTIVITY_NEW_TASKと共に) のようです。
ただし、Android API によると、このフラグは通常の使用には推奨されません。
独自の最上位アプリケーション ランチャーを実装する場合を除き、このフラグは使用しないでください。...
デフォルトのシステムにはグラフィカルなタスク管理が含まれていないため、ユーザーが起動したタスクに戻るための何らかの方法を提供しない限り、このフラグを使用しないでください。
この情報は、インテントに関するその他の説明と同じくらい紛らわしいようです。
同様の結果を達成するIntent.FLAG_ACTIVITY_CLEAR_TASKなど、私が見た他のインテントフラグがありますが、それらは奇妙な動作をしたり、高い API を使用したりします。
質問
このフラグを使用しても安全ですか? それに代わる良いものはありますか?
このフラグを使用することの危険性と、それを使用する API の記述の意味は何ですか?