Android四大啟動模式

2021-08-14 19:42:15 字數 2244 閱讀 5472

一、啟動模式概述     

android中task容器棧,其實,就是activity的乙個容器集合

所有的activity例項都是存放在這個容器棧裡面。其實就是

資料結構

中棧是乙個原理:

先進後出

後進先出

所有操作都是發生在棧頂。

做android開發朋友都應該知道,應用中每個有效的activity元件都必須需要在androidmanifest.xml工程配置資料夾中註冊宣告。在裡面中有很多屬性我們可以去配置,如果不配置就使用系統預設的配置屬性

。其中,我們今天要討論的activity啟動模式就是屬於activity配置屬性之一,叫launchmode,它具有四種啟動模式,分別是:

1.standard,2.singletop,3.singletask,4.singleinstance,

一般如果不顯示宣告,預設為standard模式。如下圖:

二、啟動模式作用

launchmode在多個activity跳轉的過程中扮演著重要的角色,它可以決定是否生成新的activity例項,是否重用已存在的activity例項,是否和其他activity例項公用乙個task裡。這裡簡單介紹一下task的概念,task是乙個具有棧結構的物件,乙個task可以管理多個activity,啟動乙個應用,也就建立乙個與之對應的task。這這裡就不詳細介紹task,我會在後面其他文章專門來討論task,有興趣了解的朋友可以關注我後面的部落格文章。

三、分別詳細介紹每鐘啟動模式

1、standard

standard模式是預設的啟動模式,不用為配置android:launchmode屬性即可,當然也可以指定值為standard。

standard模式是所啟動的activity都是在同乙個task容器棧下,不會重新建立新的task容器棧。先壓入棧的activity例項按順序入棧底,後入棧在棧頂,處於棧的頂部activity例項處於活動狀態,其他處於非活動狀態。按物理返回鍵,退出當前所處活動狀態activity視窗,這樣就會從task容器棧中彈出,顯示在手機主螢幕上,從而,有非活動狀態轉換成活動的狀態。其次,standard容器棧可能會存在著相同的activity例項,只有沒呼叫一次startactivity方法,就會建立目標activity例項物件壓入task容器棧。

2、singletop

androidmanifest.xml檔案中launchmode屬性配置singletop,那麼啟動例項化activity,如果task容器棧頂存在已經啟用的activity例項,就會重用當前棧頂的activity例項,不會再重新去例項化activity物件。善於思考的朋友可能會問,如果要啟動的目標activity已經有例項化物件存在task容器棧裡面,只是現在不處於棧頂,這樣情況下,singletop啟動模式會建立目標activity例項嗎?答案是肯定的。要啟動的目標activity例項正好處於棧頂,才能重用該例項,其他情況必須建立新例項。

3、singletask

singletask模式,特別需要注意了。啟動的目標activity例項如果已經存在task容器棧中,不管當前例項處於棧的任何位置,是棧頂也好,棧底也好,還是處於棧中間,只要目標activity例項處於task容器棧中,都可以重用該activity例項物件,然後,把處於該activity例項物件上面全部activity例項清除掉,並且,task容器棧中永遠只有唯一例項物件,不會存在兩個相同的例項物件。所以,如果你想你的應用不管怎麼啟動目標activity,都只有唯一乙個例項物件,就使用這種啟動模式。

4、singleinstance

singleinstance啟動模式,簡單說就是可以共享某個activity。比如,應用1的任務容器棧中建立了mainactivity例項,應用2也要啟用mainactivity,則不需要建立mainactivity例項,直接可以公用mainactivity例項。

尤其值得注意:應用1啟動mainactivity,按home鍵;開啟應用2啟動應用1的mainactivity例項。在按home鍵,開啟應用1,這時候應用1的介面是應該是處於mainactivity介面例項。

Android四大啟動模式

1 standard standard模式是預設的啟動模式,不用為配置android launchmode屬性即可,當然也可以指定值為standard。standard模式是所啟動的activity都是在同乙個task容器棧下,不會重新建立新的task容器棧。先壓入棧的activity例項按順序入棧...

四大元件 Activity啟動模式

標準啟動模式 standard 預設情況下所有的activity都是這種啟動模式,典型的後進先出,即後開啟的activity檢視浮在前檢視的上層,當我們返回的檢視的時候,先返回最上層。單一頂部模式 singletop 若任務棧的棧頂已經存在了要開啟的activity檢視,就不會重新建立activit...

android 四大元件

1.activity 2.service 3.contentprovider 應用中的資料,對外進行共享,其它應用可以通過內容提供者,可以訪問到你應用中的資料,對資料進行增刪改查 1 對不同的資料格式,統一了檔案格式和資料訪問api 2 內容提供者要繼承contentprovider類 3 在清單檔...