先列出這四種模式:
每次啟動這個activity的元件的時候, 都會去新建立 activity例項,然後放到任務棧中去.
從上圖可以看出, standard模式不管有沒有該activity,都會建立乙個新的出來.
在啟動某個具體的activity 的時候, 系統會去檢查當前的任務棧中是否處於棧頂的當前的activity的例項,
如果是, 那麼就不新建立. 如果處於棧頂不是當前的activity的例項,那麼仍然會新建立例項
如簡訊應用
從上圖可以看出, 在啟用了activity2後,不會再建立新的activity2, 因為已經有乙個activity2在任務棧的頂部了.
如果在頂部的是activity1,那麼還是會繼續建立activity2的
在啟動activity的時候, 如果發現當前的任務棧中已經有這個activity的例項了, 那麼就不會新建立這個activity的例項了,
並且會將處於這個activity 之上的activity的例項給彈棧
如果乙個activity的例項建立的過程中,占用的記憶體比較大, 消耗了挺多資源,
那麼 這個activity的啟動模式通常就會設定成 單一任務棧模式.
例如瀏覽器使用的是singtask,瀏覽器中有js的解析器,css的解析器等等,設定成singtask會節約記憶體
從上圖可以看出, 在啟用了activity1後, 任務棧中只剩activity1了,
因為只能有activity1乙個例項,並且會將處於上面的activity2給彈棧
如果某個activity的啟動模式設定成單一例項模式, 那麼整個手機系統中, 就只能有乙個這個activity的例項了,
並且這個activity的例項會在乙個單獨的任務棧中.這種啟動一般很少用.
除了系統級別的一些應用程式會用,其他的應用程式很少用.
如果某個activity 要顯示的介面在整個手機中 只有乙個 的話,那麼 這個activity就會設定成singleinstance
從上圖可以看出, 在應用1要啟用activity3的時候,發現手機系統裡的應用2已經有activity3了,
這時,應用1不會再去建立activity3,而是共享應用2裡的activity3
Activity四種啟動模式
launchmode在多個activity跳轉的過程中扮演著重要的角色,它可以決定是否生成新的activity例項,是否重用已存在的activity例項,是否和其他activity例項公用乙個task裡。這裡簡單介紹一下task的概念,task是乙個具有棧結構的物件,乙個task可以管理多個acti...
Activity四種啟動模式
activity的啟動模式可以通過androidmanifest.xml檔案中的元素的屬性來指定,一共有4中模式 android name activitymain android launchmode singletask 1 standard 2 singletop 3 singletask 4...
Activity 四種啟動模式
activity有四種載入模式 standard 預設 singletop,singletask和 singleinstance。以下逐一舉例說明他們的區別 一 standard activity的預設載入方法,即使某個activity在task棧中已經存在,另乙個activity通過intent跳...