Activity啓動模式詳解

Activity有四種加載模式開發

standard: 標準(默認)模式get

當經過這種模式來啓動Activity時,總會爲目標Activity建立一個新的實例,並將該Activity添加到當前Task棧中.注意,這種方式不會啓動新的Task,只是將新的Activity添加到原有的Taskit


2 singleTop: Task頂單例模式程序

該模式和standard模式基本一致,但有一點不一樣:當將要被啓動的Activity已經位於Task棧頂時,系統不會從新建立目標Activity實例,而是直接複用Task棧頂的Activity方法


3 singleTask: Task內單例模式開發者

採用該加載模式時,Activity在同一個Task內只有一個實例.當系統採用singleTask模式加載Activity時,又分爲如下三種狀況:vi

(1)若是將要啓動的Activity不存在,那麼系統將會建立該實例,並將其加入Task棧頂單例模式

(2)若是將要啓動的Activity已存在,且存在棧頂,那麼此時與singleTop模式的行爲相同單例

(3)若是將要啓動的Activity存在可是沒有位於棧頂,那麼此時系統會把位於該Activity上面的全部其餘Activity所有移出Task,從而使得該目標Activity位於棧頂實例


* 4 singleInstance: 全局單例模式

在此種加載模式下,不管從哪一個Task中啓動目標Activity,只會建立一個目標Activity實例且會用一個全新的Task棧來裝載該Activity實例.當系統採用singleInstance模式加載Activity時,又分爲如下兩種狀況:

(1)若是將要啓動的Activity不存在,那麼系統將會先建立一個全新的Task,再建立目標Activity實例並將該Activity實例放入此全新的Task中

(2)若是將要啓動的Activity已存在,那麼不管它位於哪一個應用程序,哪一個Task中;系統都會把該Activity所在的Task轉到前臺,從而使該Activity顯示出來


Android對於Activity的管理方式

Android採用Task來管理多個Activity.

當啓動一個APP時,Android就會爲之建立一個Task而後啓動這個應用的入口Activity.可是Android並無爲Task提供API,開發者沒法真正地訪問Task,只能調用Activity的getTaskId()方法來獲取其所在的Task的ID.事實上,咱們能夠把Task理解成Activity棧,Task以棧的形式來管理Activity:將不斷啓動的Activity壓入棧.即:先啓動的Activity被放入棧底,後啓動的Activity放在Task棧頂

相關文章
相關標籤/搜索