アクティブActivityの4種類のロードモード

1590 ワード

singleTop intent Activity , intent , 。( , !)

singleTask : intent , singleTask Activity , Activity 。 intent 。

 
Activityの4種類のロードモード:
 
1、standard:システムのデフォルトモードで、ジャンプすると新しいインスタンスが生成されます.Act 1という名前のactivityがあると仮定し、文を実行します.
 startActivity(new Intent(Act1.this, Act1.class));
その後、Act 1は別のAct 1にジャンプし、現在のスタックにはAct 1の2つのインスタンスがある.戻るキーを押すと、まだAct 1(最初の)中にあることがわかります.
 
2、singleTop:singleTopはstandardモードと似ています.唯一の違いは、ジャンプのオブジェクトがスタックトップにあるactivity(ユーザの目の前に見えるactivityと理解できるはず)である場合、プログラムは新しいactivityインスタンスを生成するのではなく、スタックトップに既存のactivityインスタンスに直接ジャンプすることである.上記の例では、Act 1がsingleTopモードの場合、ジャンプを実行したスタックには依然として1つのインスタンスしかなく、今戻るキープログラムを押すと直接終了します.これは少ないようです.
 
3、singleTask:singleTaskモードと後のsingleInstanceモードはいずれも1つのインスタンスしか作成されていない.このモードでは、ジャンプしたオブジェクトがスタックの上部にあるactivityかどうかにかかわらず、プログラムは新しいインスタンスを生成しません(もちろん、スタックにすでにこのインスタンスがあることを前提とします).このモードはかなり役に立ち、今後のマルチactivity開発では、ジャンプの関係で同じページに複数のインスタンスが生成されることがよくあります.これはユーザー体験では常によくありませんが、対応するactivityをsingleTaskモードと宣言すると、このような問題はなくなります.しかし、先日、スタートページを除く他のページをsingleTaskモードに設定しないでくださいという人を見たことがあるようですが、原因はしばらく不明ですが、どなたかご存知の方教えてください.
 
4、singleInstance:singleInstanceモードに設定されたactivityは1つのtaskを独占し(taskはプロセスと理解できるような気がする)、1つのtaskを独占するactivityはactivityというより、他のactivityとは独立したアプリケーションであり、独自のコンテキストactivityを持っている.例を挙げて説明しましょう.
現在、Act 1、Act 2、Act 3の3つのactivityがあります.ここで、Active 2はsingleInstanceモードです.これらの間のジャンプ関係は、Act 1−Act 2−Act 3であり、Act 3で戻りキーが押される.Act 2は独立したtaskにあり、Act 3のコンテキストactivityに属していないため、このとき直接Act 1に戻る.これがsingleInstanceモードです.