singleInstance:get
第一次進入:onCreate onStart
在棧頂再次進入: onNewIntent
不在棧頂再次進入:onNewIntent onRestart onStart
按home鍵再次進入:onRestart onStart
按返回鍵:onRestart onStart
standard:
第一次進入:onCreate onStart
在棧頂再次進入: onCreate onStart
不在棧頂再次進入:onCreate onStart
按home鍵再次進入:onRestart onStart
按返回鍵:onRestart onStart
singleTop:
第一次進入:onCreate onStart
在棧頂再次進入:onNewIntent
不在棧頂再次進入:onCreate onStart
按home鍵再次進入:onRestart onStart
按返回鍵:onRestart onStart
singleTask:
第一次進入:onCreate onStart
在棧頂再次進入:onNewIntent
不在棧頂再次進入:onNewIntent onRestart onStart
按home鍵再次進入:onRestart onStartit
按返回鍵:onRestart onStart程序
Activity的四種啓動模式:
1. standard
默認啓動模式,每次激活Activity時都會建立Activity,並放入任務棧中,永遠不會調用onNewIntent()。
2. singleTop
若是在任務的棧頂正好存在該Activity的實例, 就重用該實例,並調用其onNewIntent(),否者就會建立新的實例並放入棧頂(即便棧中已經存在該Activity實例,只要不在棧頂,都會建立實例,而不會調用onNewIntent(),此時就跟standard模式同樣)。
3. singleTask
若是在棧中已經有該Activity的實例,就重用該實例(會調用實例的onNewIntent())。重用時,會讓該實例回到棧頂,所以在它上面的實例將會被移除棧。若是棧中不存在該實例,將會建立新的實例放入棧中(此時不會調用onNewIntent())。
4. singleInstance
在一個新棧中建立該Activity實例,並讓多個應用共享改棧中的該Activity實例。一旦改模式的Activity的實例存在於某個棧中,任何應用再激活改Activity時都會重用該棧中的實例,其效果至關於多個應用程序共享一個應用,無論誰激活該Activity都會進入同一個應用中。 vi
當調用到onNewIntent(intent)的時候,須要在onNewIntent() 中使用setIntent(intent)賦值給Activity的Intent.不然,後續的getIntent()都是獲得老的Intent。實例