1

singleTask と singleInstance だけでは答えになりません。

スタックにアクティビティがあります ... n, n+1, n+2

の要素をn+2開くことができますn+1

これによりスタックが作成されます

... n, n+1, n+2, n+1

スタックを作成したい

... n, n+2, n+1n+1スタックの一番上に移動されます

singleTask はこのスタックを作成します

... n, n+1

singleInstance がこのスタックを作成します

n+1以前のすべての活動が閉鎖されている場所。

どちらも望んでいません。

使用できる起動モードはありますか?

FLAG_ACTIVITY_LAUNCHED_FROM_HISTORYこのアクティビティが最初から再度読み込まれないようにするだけですが、履歴内の重複したアクティビティをクリアしません。おそらく、使用できるフラグの組み合わせがありますか? または、アクティビティスタックのインデックスでそのアクティビティを見つけて、それが最新のアクティビティでない場合は削除できますか?

4

2 に答える 2

2

FLAG_ACTIVITY_REORDER_TO_FRONT を使用する必要があると思います。

Context.startActivity() に渡された Intent に設定されている場合、このフラグにより​​、起動されたアクティビティが既に実行されている場合、そのタスクの履歴スタックの先頭に移動されます。たとえば、A、B、C、D の 4 つのアクティビティで構成されるタスクを考えてみましょう。D が、アクティビティ B のコンポーネントに解決されるインテントで startActivity() を呼び出すと、B が履歴スタックの先頭に移動されます。この結果の順序: A、C、D、B。FLAG_ACTIVITY_CLEAR_TOP も指定されている場合、このフラグは無視されます。

于 2014-05-02T16:04:06.620 に答える