3

Androidの問題を作成しました:ここ

信じられないかもしれませんが、それは本当です。重要な点は、 -FLAG_ACTIVITY_MULTIPLE_TASK が同じ taskAffinity を持つ複数のタスクを作成することです。

Google ドキュメントで述べたように、MULTIPLE_TASK はランチャーとしてのみ使用する必要があります。

このバグを作成する方法は次のとおりです。
1. 3 つのアクティビティ、A1、A2、L を準備します。L - Launcher (おそらく singleInstance)、A2 - singleTask、A1 A2 は同じ taskAffinity を持っています

2.L は MULTIPLE_TASK で A1 を開始します。mHistory = L->[タスク 1: A1(トップ)]

3.A1 が A2 を開始します。mHistory = L->[タスク 1: A1->A2(top)]

4.HOMEを押すと、Lが起動します。 mHistory = [タスク1: A1->A2]->HOME->L(top)

5.L は MULTIPLE_TASK で A1 を開始します。mHistory = [タスク1: A1->A2]->HOME->L->[タスク2: A1(上)]

6.A1 が A2 を開始します。mHistory = [タスク1: A1->A2]->HOME->L->[タスク2: A1->A2(上)]

7.A2 の 2 つのインスタンスを取得します。これは singleTask アクティビティです。

BUG は、このフラグが原因です - FLAG_ACTIVITY_MULTIPLE_TASK. 同じ taskAffinity で複数のタスクを作成できます。singleTask A2 の既存のタスクを見つけようとすると、最初に ではなく taskAffinity が比較されますActivity.componentName()

バグコードはcom/android/server/am/ActivityStack.java

line 2742 - `startActivityUncheckedLocked()`

line 520 which is in `findTaskLocked()` - first compare the taskAffinity
4

0 に答える 0