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四大啟動模式相當簡單。預設standard模式,他是task容器棧可能存在相同的activity例項;singletop模式下,重用棧頂activity例項,棧頂不存在,則建立新的activity例項,該模式下有可能存在相同activity例項;singletask模式,task容器棧存在目標activity例項,則重用該例項,task容器棧永遠只有唯一activity例項,並且,其一是activity例項被清除掉。singleinstance模式,不同應用可以共享activity例項,並且是處於不同容器棧中。
Android四大啟動模式
一 啟動模式概述 android中task容器棧,其實,就是activity的乙個容器集合 所有的activity例項都是存放在這個容器棧裡面。其實就是 資料結構 中棧是乙個原理 先進後出 後進先出 所有操作都是發生在棧頂。做android開發朋友都應該知道,應用中每個有效的activity元件都必...
四大元件 Activity啟動模式
標準啟動模式 standard 預設情況下所有的activity都是這種啟動模式,典型的後進先出,即後開啟的activity檢視浮在前檢視的上層,當我們返回的檢視的時候,先返回最上層。單一頂部模式 singletop 若任務棧的棧頂已經存在了要開啟的activity檢視,就不會重新建立activit...
android 四大元件
1.activity 2.service 3.contentprovider 應用中的資料,對外進行共享,其它應用可以通過內容提供者,可以訪問到你應用中的資料,對資料進行增刪改查 1 對不同的資料格式,統一了檔案格式和資料訪問api 2 內容提供者要繼承contentprovider類 3 在清單檔...