之前自學android的時候,單從視頻和書本上對這四種啟動模式僅僅有了初步的字面上的理解。最近實戰了下,也對這四種啟動模式有了比較清晰的概念。
首先說下什么是Activity,按照我的理解,我們在手機上看到的每一個頁面都是一個Activity,包括系統的桌面,也是一個Activity。
要啟動一個Activity有四種模式:standard(標准啟動模式)、singleTop、singleTask、singleInstance。
注: Aty1_1和Aty2_1為兩個不同的Activity,Aty1_1和Aty1_2為同一個Activity中的不同實例。
1. standard
不同的Activity在同一個棧中,
每次創建新實例的時候,新實例便會堆放到棧頂。

當點返回鍵的時候,便會從棧頂按順序將實例移除棧。直至棧為空則退回到桌面。
2. singleTop
不同的Activity在同一個棧中。
① 如果此時Aty1的實例在棧頂,此時再創建一個新的Aty1並不會成功。

② 如果Aty_1不在棧頂,此時再創建一個Aty1的實例,會產生一個新的Aty1實例到棧頂。

當點返回鍵的時候,便會從棧頂按順序將實例移除棧。直至棧為空則退回到桌面。
3. singleTask
不同的Activity在同一個棧中。
① 如果此時Aty1的實例在棧頂,此時再創建一個新的Aty1並不會成功。

② 如果Aty_1不在棧頂,此時再創建一個Aty1的實例,頁面會返回到任務棧中存在的Aty1的實例,並將Aty1上面所有的實例移出棧。

當點返回鍵的時候,便會從棧頂按順序將實例移除棧。直至棧為空則退回到桌面。
4. singleInstance
不同的Activity 處於不同棧中
① 如果此時Aty1的實例在棧頂,此時再創建一個新的Aty1並不會成功。

② 如果此時Aty2的實例還未被創建,則創建的Aty2的實例時會存放到一個新的任務棧中。

③ 如果此時Aty1的實例已存在且我們在Aty2的頁面中創建新的Aty1實例時,則不會創建新的Aty1實例,而是頁面跳轉到原來任務棧中存在的Aty1的實例,但存放Aty2實例的任務棧仍然存在

當點返回鍵的時候,便會依次銷毀相應的任務棧,直至任務棧數為空則退回到系統桌面。
以上是我對安卓四種Activity啟動模式的理解,如果有不對的地方還望指正。