1. 程式人生 > >在程式開發中必須瞭解Activity的四種啟動模式

在程式開發中必須瞭解Activity的四種啟動模式

Activity的啟動模式有四種,分別是standard、singleTop、singleTask和singleInatance。在AndroidMainfest.xml中,通過標籤的android:launchMode屬性可以設定啟動模式.下面針對四種模式分別進行詳細的講解。
1.standard模式
standard是Activity預設的啟動模式,在不指定Activity啟動模式的情況下,所有Activity使用的都是standard模式,因此前面使用的Activity都是standard啟動模式
在standard模式下,每當啟動一個新的Activity,它就會進入任務棧,並處於棧頂的位置,系統不會判斷這個Activity在棧中是否存在,每次啟動都會建立一個新的例項。
接下來通過圖示展示一下standard模式下Activity的存放情況:
在standard啟動模式下假設有三個Activity,首先Activity01最先入棧,其次是Activity02,最後是Activity03;出棧時,Activity03最先出棧,其次是Activity02,最後是Activity01,滿足”先進後出”的原則.
這裡寫圖片描述


這裡寫圖片描述

2.singleTop模式
singleTop模式與standard類似,不同的是,當啟動的Activity已經位於棧頂時,則直接使用它不建立新的例項.如果啟動的Activity沒有位於棧頂時,則建立一個新的例項位於棧頂.
接下來通過圖示展示一下singleTop模式下Activity的存放情況:
分兩種情況:
(1)當前棧頂中的元素是Activity03,如果再次啟動的介面還是Activity03,則複用當前棧頂的Activity例項.
這裡寫圖片描述

由於當前棧頂還是Activity03,則Activity03不用再次入棧,所以出棧和 standard一樣.
這裡寫圖片描述

(2)如果再次啟動的介面沒有位於棧頂,則會重新建立一個例項.
這裡寫圖片描述


這裡寫圖片描述

3.singleTask模式
如果希望Activity在整個應用程式中中存在一個例項,可以使用singleTask模式,每次啟動Activity時,系統首先會檢查棧中是否存在該Activity的例項,如果發現則直接使用該例項,並將當前之上的所有Activity出棧,如果沒有發現則建立一個新的例項.
這裡寫圖片描述
這裡寫圖片描述

4.singleInstance模式
在開發程式中,如果需要Activity在整個系統中都只有一個例項,這時就需要用到singleInstance模式,singleInstance模式載入Activity時,無論從哪個任務棧中啟動該Activity,只會建立一個Activity例項,並且會使用一個全新的任務棧來裝載該Activity例項,採用這種模式分為以下兩種模式:
(1)如果要啟動的Activity不存在,系統會先建立一個新的任務棧,再建立該Activity例項,並把Activity加入棧頂.
這裡寫圖片描述