配置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實例。