onNewIntent調用時機

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。實例

相關文章
相關標籤/搜索