一、standard-默認模式
這個模式是默認的啓動模式,即標準模式,在不指定啓動模式的前提下,系統默認使用該模式啓動Activity,每次啓動一個Activity都會重寫創建一個新的實例,不管這個實例存不存在,這種模式下,誰啓動了該模式的Activity,該Activity就屬於啓動它的Activity的任務棧中。這個Activity它的onCreate(),onStart(),onResume()方法都會被調用。
二、singleTop-棧頂複用模式
對以上兩點內容進行總結 :
standard啓動模式是默認的啓動模式,每次啓動一個Activity都會新建一個實例不管棧中是否已有該Activity的實例。
singleTop模式分3種情況
- 當前棧中已有該Activity的實例並且該實例位於棧頂時,不會新建實例,而是複用棧頂的實例,並且會將Intent對象傳入,回調onNewIntent方法
- 當前棧中已有該Activity的實例但是該實例不在棧頂時,其行爲和standard啓動模式一樣,依然會創建一個新的實例
- 當前棧中不存在該Activity的實例時,其行爲同standard啓動模式
三、singleTask-棧內複用模式
四、singleInstance-全局唯一模式
singleTask啓動模式啓動Activity時,首先會根據taskAffinity去尋找當前是否存在一個對應名字的任務棧
- 如果不存在,則會創建一個新的Task,並創建新的Activity實例入棧到新創建的Task中去
- 如果存在,則得到該任務棧,查找該任務棧中是否存在該Activity實例
- 如果存在實例,則將它上面的Activity實例都出棧,然後回調啓動的Activity實例的onNewIntent方法
- 如果不存在該實例,則新建Activity,併入棧