特定のクラスを持つオブジェクトがバックスタックにあるかどうかを確認したい。そうであれば、FLAG_ACTIVITY_CLEAR_TOP を使用します。そうでない場合は、ルートにポップしてクラスをプッシュします。
スタックに A、C、D があり、B を追加したいとします。B はスタック (ここ) に存在しないため、スタックを A、B にする必要があります (C、D をクリアして B をプッシュします)。
スタックに A、B、C、D がある場合、B をプッシュせずに C、D をポップします。
スタック内のすべてをクリアし、「GoToClass」のインテント パラメータを使用してクラス A をプッシュし、-root-A をロードした後にクラス「GoToClass」をプッシュすることなく、これを行う方法はありますか?
Android のドキュメントから:
public static final int FLAG_ACTIVITY_CLEAR_TOP
設定されていて、起動されているアクティビティが現在のタスクで既に実行されている場合、そのアクティビティの新しいインスタンスを起動する代わりに、その上にある他のすべてのアクティビティが閉じられ、このインテントがに配信されます (現在上)新しいインテントとしての古いアクティビティ。
たとえば、アクティビティ A、B、C、D で構成されるタスクを考えてみましょう。アクティビティ B のコンポーネントに解決されるインテントで D が startActivity() を呼び出すと、C と D は終了し、B は指定されたインテントを受け取ります。となり、スタックは A、B になります。