Activity之launchMode(運行模式)

1、Activity launchMode(運行模式)共有4種,分別是:standard,singleTop,singleTask,    singleInstance瀏覽器

standard:(備註:standard是系統默認的啓動模式。)ide

    標準啓動模式,每次激活Activity 時都會建立Activity,並放入任務棧中。若是啓動此ActivityIntent中沒有設置FLAG_ACTIVITY_NEW_TASK標誌,則這個Activity與啓動他的Activity在同一個Task,若是設置了Activity請參考上面FLAG_ACTIVITY_NEW_TASK的詳細說明,「launchMode」設置爲"standard"Activity能夠被實例化屢次,能夠在Task中的任何位置,對於一個新的Intent請求就會實例化一次.spa


singleTop:orm

    若是在任務的棧頂正好存在該Activity 的實例,就重用該實例,而不會建立新的Activity 對象,不過它會調用onNewIntent()方法。若是棧頂部不存在就會建立新的實例並放入棧頂(即便棧中已經存在該Activity 實例,只要不在棧頂,都會建立實例)。若是啓動此Activity Intent中沒有設置FLAG_ACTIVITY_NEW_TASK標誌則這個Activity 與啓動他的Activity在同一個Task若是設置了Activity 請參考上面FLAG_ACTIVITY_NEW_TASK的詳細說明, 「launchMode」設置爲"singleTop"Activity能夠被實例化屢次,能夠在Task中的任何位置,對於一個新的Intent請求若是在Task棧頂,則會用棧頂的Activity響影Intent請求,而不會從新實例化對象接收請求,若是沒有在棧頂,則會實例化一個新的對象接收Intent請求.對象


singleTask:資源

    若是在棧中已經有該Activity 的實例,就重用該實例(會調用實例的onNewIntent ())。重用時,會讓該實例回到棧頂,所以在它上面的實例將會被移除棧。若是棧中不存在該實例,將會建立新的實例放入棧中。和s ingleTop在名字上便可看出區別,即s ingleTop每次只檢測當前棧頂的activity是不是咱們須要請求建立的,而singleTask則會檢測棧中所有的Activity 對象,從上向下,若是檢測到是咱們所請求的則會消滅此Activity 對象上面的對象,直接把檢測到的咱們須要的Activity 置爲棧頂。「launchMode」設置爲" singleTask"Activity老是在棧底,只能被實例化一次,它容許其它Activity壓入"singleTask"Activity 所在的Task,若是有新的Intent請求有此標誌的Activity ,則系統會清除有此標誌的Task棧中的所有Activity,並把此Activity顯示出來.it


singleInstance:class

    在一個新棧中建立該Activity 實例,並讓多個應用共享該Activity 實例。一旦這種模式的Activity實例存在於某個棧中,任何應用再激活這個Activity時都會重用該棧中的實例,其效果至關於多個應用程序共享一個應用,無論誰激活該Activity都會進入同一個應用中。此啓動模式和咱們使用的瀏覽器工做原理相似,在多個程序中訪問瀏覽器時,若是當前瀏覽器沒有打開,則打開瀏覽器,不然會在當前打開的瀏覽器中訪問。此模式會節省大量的系統資源,由於他能保證要請求的Activity對象在當前的棧中只存在一個。「launchMode」設置爲」singleInstance」Activity老是在棧底,只能被實例化一次,不容許其它的Activity壓入」singleInstance」Activity 所在Task,即整個Task棧中只能有這麼一個Activity .原理

相關文章
相關標籤/搜索