Activity的四種載入模式

2021-08-14 18:33:04 字數 1787 閱讀 7454

正如前面介紹activity配置時提到的,配置activity時可指定android:launchmode屬性,該屬性用於配置該activity的載入模式。該屬性支援如下·4個屬性值。

>standard:標準模式,這是預設的載入模式。

>singletop:task棧頂單例模式。

>singletask: task內單例模式。

>singleinstance:全域性單例模式。

android採用task來管理多個activity,當我們啟動乙個應用時,android會為之建立乙個task,然後啟動這個應用的入口activity(即中配置為main和launcher的activity).

android的task是個有點麻煩的概念——因為android並沒有為task提供api,因此開發者無法真正去訪問task,只能呼叫activity的gettaskid()方法來獲取它所在的task的id。事實上我們可以把task理解成activity棧,task以棧的·1形式來管理activity:先啟動的activity被放在task棧底,後啟動的activity被放在棧頂。

那麼activity的載入模式,就負責管理例項化,載入activity的方式,並可以控制activity與task之間的載入關係。

下面詳細介紹這四種載入模式。

1. standard 模式

每次通過這種模式啟動目標activity時,android總會為目標activity建立乙個新的例項,並將該activity新增到當前task棧中——這種模式不會啟動新的task,新actiivty將被新增到原有的task中。

當使用者單擊手機的「返回」鍵時,系統將會逐一從activity棧頂刪除activity例項。

2.singletop

這種模式與starndard模式基本相似,但有一點不同:當將要啟動的目標activity已經位於task棧頂時,系統不會重新建立目標activity的例項,而是直接復用已有的activity例項。

如果將上面的mainactivity的載入模式改為singletop,那麼無論使用者單機多少次按鈕,介面上的程式都不會有任何變化。

如果將要啟動的目標activity沒有位於task棧頂,此時系統會重新建立目標activity的例項,並將它載入到task棧頂——此時與stardard模式完全相同。

3.singletask 模式

採用這種載入模式的activity在同乙個task內只有乙個例項,當系統採用singletask模式啟動目標activity時,可分為如下三種情況。

>如果將要啟動的目標activity不存在,系統將會建立目標activity的例項,並將它加載入task棧頂。

>如果將要啟動的目標activity已經位於task棧頂,此時與singetop模式的行為相同

>如果將要啟動的目標哦activity意境存在,但沒位於task棧頂,系統將會把位於該activity上面所有activity移出task棧,從而使得目標activity轉入棧頂。

4. singleinstance模式

在這種載入模式下,系統保證無論從那個task中啟動目標activity,只會建立乙個目標activity例項,並會使用乙個全新的task棧來載入該activity例項。

當系統採用singleinstance模式啟動目標activity時,可分為如下兩種情況。

>如果將要啟動的目標activity不存在,系統會先建立乙個全新的task,在建立乙個目標activity的例項,並將它將入到新的task棧頂。

>如果將要啟動的目標activity已經存在,無論它位於那個應用程式中,位於那個task中系統都會把該activity所在detask轉到前台,從而使該activity顯示出來。

Activity的四種載入模式

activity之間的跳轉,或者說載入乙個新的activity,一般對於開發者來說,都不是乙個太難的問題。activity的載入還分為四種不同載入模式,靈活的使用合適的載入模式,可以避免產生大量的重複的activity,從而優化效能,減少系統資源消耗。四種載入模式具體為 這些啟動模式可以androi...

Activity的四種載入模式

activity有四種載入模式 1 standard 標準 預設 模式 當通過這種模式來啟動activity時,總會為目標activity建立乙個新的例項,並將該activity新增到當前task棧中.注意,這種方式不會啟動新的task,只是將新的activity新增到原有的task 2 singl...

Activity的四種載入模式

standard 標準模式,也是預設模式。每次啟動activity的時候,為目標activity建立新的例項,並將它加入到當前task棧中。single top 棧頂單例模式,如果當前棧頂為要啟動的activity,將不會啟動.single task 如果要啟動的activity不存在,則建立新的a...