アンドロイドでは、そこに活性起動モードの4種類があります:標準、singleTop、及びsingleTask singleInstance、singleTopと同様の標準、及び使用等singleTask singleInstanceは、以下の通りであります:
(1).standard和singleTop
両方のモードのロード、同じタスクができ活性、活性スタックの複数のインスタンスであると配置することができるどこでも。
最初の例:
仮定する対象タスクのアクティビティスタックがある:A-> B-> C-> D(スタックの底 - >スタック)
プログラムでstartActivity(D)を呼び出し
Dは、標準モードの場合は、アクティビティスタックは次のようになります。
A-> B-> C-> D-> D、すなわち、Dの再作成する場合、あります
DはsingleTopモードである場合には、活動のスタックはなり:
A-> B-> C-> D、Dは、対象タスクD活性スタックスタック場合は、新しいインスタンスを作成しないこと、インスタンスを作成しませんが、コールonNewIntent D()メソッド、およびその逆Dは活動の対象タスクのスタックスタックにない場合、それはDのインスタンスを再作成します。
(2)。singleTask和singleInstance
()を起動するstartActivityによって場合、両方の負荷モードでは、同じタスクのみ、アクティビティのインスタンス内に存在することができ、その後、むしろ新しいインスタンスを作成するよりも、onNewIntent()メソッドを呼び出します。これら2つのモードで、アクティビティインスタンスがスタックアクティビティスタックの底部に配置されています。
負荷のこれら2つのモード間の差:
アクティビティ例Aは、次の2つのロードモードを仮定する。
singleTask:
コールstartActivity A(B)B例起動場合、A及びBは、同一タスクに位置しています。
singleInstance:
AはstartActivity(B)Bを呼び出した場合の例を開始し、システムが自動的に、意図FLAG_ACTIVITY_NEW_TASKに新しいタスクに置くBのインスタンスをプロパティが追加されます、それは自分自身だけではなく、そこにすることができ、タスクAのインスタンスであります他の例があります。
ます。https://www.cnblogs.com/wangzehuaw/p/4977649.htmlで再現