Activity的啟動模式

2021-07-29 08:51:26 字數 1849 閱讀 4468

android採用任務棧(task)的方式來管理activity的例項。當啟動乙個應用時,android就會為之建立乙個任務棧。啟動模式簡單地說就是activity啟動時的策略,在androidmanifest.xml中的標籤的android:launchmode屬性設定。啟動模式有4種,分別為standard、singletop、singletask、singleinstance;

講解啟動模式之前,有必要先講解一下「任務棧」的概念。

一:android下的任務棧

android系統中的任務棧,類似於乙個容器。用於管理所有的activity例項。在存放activity時,滿足「先進後出(first-in/last-out)」的原則。先加入任務棧中的activity會處於容器下面,後加入的處於容器上面,而從任務棧中取出activity是從最頂端取出,最後取出的是最低端的activity。如下圖:

二:activity的4中啟動模式

1、standard模式:

standard是activity預設的啟動模式,在不指定activity啟動模式的情況下,所有activity使用的都是standard模式。

在standard模式下,每當啟動乙個新的activity,它就會進入任務棧,並處於棧頂的位置,對於使用standard模式的activity,每次啟動都會建立乙個新的例項。

適用於大多數應用場景。

在standard啟動模式下,activity01最先進棧,其次是activity02,最後是activity03;出棧時,activity03最先出棧,其次是activity02,做後是activity01,滿足「先進後出」的原則。如下圖:

2、singletop模式:

singletop模式與standard模式相似,不同的是,當啟動的activity已經位於棧頂時,則直接使用它不建立新的例項。

解決乙個使用者體驗的問題,避免已經開啟的頁面重複開啟多次。

當前棧頂中的元素是activity03,如果再次啟動的介面還是activity03,則復用當前棧頂的activity例項,如果再次啟動的介面沒有位於棧頂,則會重新建立乙個例項。

3、singletask模式:

當activity的啟動模式指定為singletask,每次啟動該activity時,系統首先會檢查棧中是否存在該activity的例項,如果發現已經存在則直接使用該例項,並將當前activity之上的所有activity出棧,如果沒有發現則建立乙個新的例項。

4、singleinstance模式:

singleinstance模式載入activity時,只會建立乙個activity例項,並且會使用乙個全新的任務棧來裝載activity例項。

特點是在整個手機作業系統裡只有乙個例項存在。

如果要啟動的activity不存在,系統會先建立乙個新的任務棧,在建立該activity的例項,並把該activity加入棧頂。如果要啟動的activity已經存在,無論位於哪個應用程式或者哪個任務棧中,系統都會把該activity所有的任務棧轉到前台,從而使該activity顯示出來。如下圖:

activity 啟動模式

在android的中activity 有4種啟動方式 standard singletop singletask singleinstance 下面就分輕重點講講這些啟動方式。1 standard啟動方式 這種方式也是系統預設的。說的簡單點,我們在使用startactivity 方法的時候,系統就會...

activity啟動模式

1 對於使用standard 模式的活動,系統不會在乎這個活動是否已經在返回棧中存在,每次啟動都會建立該活動的乙個新的例項。例如a啟動a,a再接著啟動a,a繼續啟動a,然後再分別出棧,如圖所示 2 當活動的啟動模式指定為 singletop,在啟動活動時如果發現返回棧的棧頂已經是該活動,則認為可以直...

Activity啟動模式

兩種方式可以定義activity啟動模式 manifest intent intent定義的啟動模式優先於manifest 不管activity執行在乙個新的任務還是與啟動它的activity同樣的任務,返回鍵總是把使用者帶到之前的activity。然而,如果啟動乙個singletask的activ...