Activity的四種啟動模式


先列出這四種模式:

  • standard 標准的啟動模式
  • singleTop 單一棧頂模式
  • singleTask 單一任務棧模式
  • singleInstance 單一實例模式

1. standard 標准的啟動模式(默認)

每次啟動這個activity的組件的時候, 都會去新創建 activity實例,然后放到任務棧中去.

 

從上圖可以看出, Standard模式不管有沒有該Activity,都會創建一個新的出來.

2. singleTop 單一棧頂模式

在啟動某個具體的activity 的時候, 系統會去檢查當前的任務棧中是否處於棧頂的當前的activity的實例,

如果是, 那么就不新創建. 如果處於棧頂不是當前的activity的實例,那么仍然會新創建實例

如短信應用

 

從上圖可以看出, 在激活了Activity2后,不會再創建新的Activity2, 因為已經有一個Activity2在任務棧的頂部了.

如果在頂部的是Activity1,那么還是會繼續創建Activity2的

3. singleTask 單一任務棧模式

在啟動activity的時候, 如果發現當前的任務棧中已經有這個activity的實例了, 那么就不會新創建這個activity的實例了,

並且會將處於這個activity 之上的activity的實例給彈棧

如果一個activity的實例創建的過程中,占用的內存比較大, 消耗了挺多資源,

那么 這個activity的啟動模式通常就會設置成 單一任務棧模式.

例如瀏覽器使用的是SingTask,瀏覽器中有js的解析器,CSS的解析器等等,設置成Singtask會節約內存

 

從上圖可以看出, 在激活了Activity1后, 任務棧中只剩Activity1了,

因為只能有Activity1一個實例,並且會將處於上面的Activity2給彈棧

 

4. singleInstance 單一實例模式

如果某個activity的啟動模式設置成單一實例模式, 那么整個手機系統中, 就只能有一個這個activity的實例了,

並且這個activity的實例會在一個單獨的任務棧中.這種啟動一般很少用.

除了系統級別的一些應用程序會用,其他的應用程序很少用.

如果某個activity 要顯示的界面在整個手機中 只有一個 的話,那么 這個activity就會設置成singleInstance

 

從上圖可以看出, 在應用1要激活Activity3的時候,發現手機系統里的應用2已經有Activity3了,

這時,應用1不會再去創建Activity3,而是共享應用2里的Activity3

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM