您好,登錄后才能下訂單哦!
一、Activity 的launchMode(運行模式)共有4種,分別是:standard,singleTop,singleTask, singleInstance
1 、standard:(備注:standard是系統默認的啟動模式。)
標準啟動模式,每次激活Activity 時都會創建Activity,并放入任務棧中。如果啟動此Activity的Intent中沒有設置FLAG_ACTIVITY_NEW_TASK標志,則這個Activity與啟動他的Activity在同一個Task中,如果設置了Activity請參考上面FLAG_ACTIVITY_NEW_TASK的詳細說明,“launchMode”設置為"standard"的Activity可以被實例化多次,可以在Task中的任何位置,對于一個新的Intent請求就會實例化一次.
2 、singleTop:
如果在任務的棧頂正好存在該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請求.
3 、singleTask:
如果在棧中已經有該Activity 的實例,就重用該實例(會調用實例的onNewIntent ())。重用時,會讓該實例回到棧頂,因此在它上面的實例將會被移除棧。如果棧中不存在該實例,將會創建新的實例放入棧中。和s ingleTop在名字上即可看出區別,即s ingleTop每次只檢測當前棧頂的activity是否是我們需要請求創建的,而singleTask則會檢測棧中全部的Activity 對象,從上向下,如果檢測到是我們所請求的則會消滅此Activity 對象上面的對象,直接把檢測到的我們需要的Activity 置為棧頂。“launchMode”設置為" singleTask"的Activity總是在棧底,只能被實例化一次,它允許其它Activity壓入"singleTask"的Activity 所在的Task棧,如果有新的Intent請求有此標志的Activity ,則系統會清除有此標志的Task棧中的全部Activity,并把此Activity顯示出來.
4 、singleInstance:
在一個新棧中創建該Activity 實例,并讓多個應用共享該Activity 實例。一旦這種模式的Activity實例存在于某個棧中,任何應用再激活這個Activity時都會重用該棧中的實例,其效果相當于多個應用程序共享一個應用,不管誰激活該Activity都會進入同一個應用中。此啟動模式和我們使用的瀏覽器工作原理類似,在多個程序中訪問瀏覽器時,如果當前瀏覽器沒有打開,則打開瀏覽器,否則會在當前打開的瀏覽器中訪問。此模式會節省大量的系統資源,因為他能保證要請求的Activity對象在當前的棧中只存在一個。“launchMode”設置為”singleInstance”的Activity總是在棧底,只能被實例化一次,不允許其它的Activity壓入”singleInstance”的Activity 所在Task棧,即整個Task棧中只能有這么一個Activity .
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。