3

私は Androidタスクとバック スタックのドキュメントを調べていましたが、ある時点で次のように言及されています。

アプリケーションでユーザーが複数のアクティビティから特定のアクティビティを開始できる場合、そのアクティビティの新しいインスタンスが作成され、スタックにプッシュされます (アクティビティの以前のインスタンスを最上位に移動するのではありません)。そのため、図 3 に示すように、アプリケーション内の 1 つのアクティビティが (異なるタスクからであっても) 複数回インスタンス化される場合があります。そのため、ユーザーが [戻る] ボタンを使用して後方に移動すると、アクティビティの各インスタンスが表示された順序で表示されます。開かれた (それぞれ独自の UI 状態を持つ)

例を見てみましょう:

Dを開始するアクティビティCを開始するアクティビティBを開始するアクティビティAがあります。

スタックは A->B->C->Dで、D から C を開始できるようになったため、D スタックから C を開始すると、

A->B->C->D->C

ここで、この標準的な動作の代わりに、Activity に 1 つのインスタンスのみ、または Back Stack に 1 つのエントリのみを持たせたいと考えています。D から開始したときにアクティビティ C が最上位になかったため、「SingleTop」は機能しません。

何か不足している可能性がありますが、アクティビティにバックスタック エントリが 1 つしかないことを確認する方法はありますか?

ありがとうプラネー

4

2 に答える 2

6

を使用Intent.FLAG_ACTIVITY_CLEAR_TOPします。例:

    Intent intent = new Intent(context, <your_activity_here>);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    context.startActivity(intent);

したがって、アクティビティ C の後のスタック内のすべてのアクティビティは自動的に終了します。指定フラグを使用する場合

A->B->C->D

となります

A->B->C

于 2012-10-11T18:04:31.183 に答える
3

使用することもできますandroid:launchMode="singleInstance" in your activity tag in manifest

于 2012-10-11T18:11:46.500 に答える