Activity的四種加載方式

配置activity時可指定android:launchMode屬性,該屬性用於配置改Activity的啓動模式。該屬性支持如下4個屬性值。android

standard:標準模式,默認的加載模式spa

singleTop:Task棧頂單例模式it

singleTask:Task內單例模式配置

singleInstance:全局單例模式activity

Android採用Task來管理多個Activity,當咱們啓動一個應用時,Android會爲之建立一個Task,而後啓動這個應用的入口Activity(即intent-filter中配置MAIN和LAUNCHER的Activity)。filter

1、standard模式vi

每次經過這種模式啓動Activity時,Android總會爲目標建立一個新的實例,並將該Activity添加到當前Task棧中,這彙總模式不會啓動新的Task,新的Activity將會被添加到緣由有的Task中。單例模式

二、singleTop模式單例

這中模式和standard有點類似,但有一點不一樣:當將要啓動的Activity已經位於Task棧頂時,系統不會從新建立目標Activity實例,而是直接複用已有的Activy實例。實例

若是要將啓動的目標Activy沒有位於棧頂,此時系統會從新建立目標Activity實例,並將它加載到Task棧頂,此時與standard模式徹底相同。

三、singleTask模式

採用這種加載模式的Activity在同一個Task內只有一個實例,啓動目標Activity時,可分爲以下三種狀況。

(1)、若是將要啓動的目標Activity不存在,系統將會建立目標Activity實例,並將它加入到Task棧頂。

(2)、若是將要啓動的Activity已經位於Task棧頂,此時與singleTop模式相同。

(3)、若是將要啓動的Activity已經存在,但沒有位於Task棧頂,系統會把位於該Activity上面全部的Activy移出Task棧,從而使目標Activity轉入棧頂。

四、singleInstance模式

系統保證不管哪一個Task中啓動目標Activity,只會建立一個目標Activity實例,並會使用一個全新的Task棧來加載該Activity實例。

相關文章
相關標籤/搜索