新しいインスタンスを起動する代わりに、スタックからアクティビティを呼び出すにはどうすればよいですか?ここにシナリオがあります:
- データを取得するためにパラメータを使用してアクティビティAを呼び出す
- AからBに移動
- BからCに移動
- Aを再度起動したいのですが、新しいインスタンスではありません。スタックから取得したいので、パラメーターを渡してデータを取得するのを待つ必要はありません。
新しいインスタンスを起動する代わりに、スタックからアクティビティを呼び出すにはどうすればよいですか?ここにシナリオがあります:
私があなたの主張を正しく理解したら、アクティビティ B と C を で簡単に終了できますfinish();
。
したがって、ActivityC が終了し、ActivityB も終了した場合、ActivityA が前面に表示されるはずです。
FLAG_ACTIVITY_REORDER_TO_FRONTを使用してみてください。例えば:
Intent intent = new Intent(BActivity.this, AActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
javadocs から:
public static final int FLAG_ACTIVITY_REORDER_TO_FRONT
API レベル 3 で追加Context.startActivity() に渡された Intent に設定されている場合、このフラグにより、起動されたアクティビティが既に実行されている場合、そのタスクの履歴スタックの先頭に移動されます。
たとえば、A、B、C、D の 4 つのアクティビティで構成されるタスクを考えてみましょう。D が、アクティビティ B のコンポーネントに解決されるインテントで startActivity() を呼び出すと、B が履歴スタックの先頭に移動されます。この結果の順序: A、C、D、B。FLAG_ACTIVITY_CLEAR_TOP も指定されている場合、このフラグは無視されます。