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棧頂