一、啟動模式介紹
啟動模式簡單地說就是Activity啟動時的策略罕容,在AndroidManifest.xml中的標(biāo)簽的android:launchMode屬性設(shè)置备恤;
啟動模式有4種,分別為standard锦秒、singleTop露泊、singleTask、singleInstance脂崔;
講解啟動模式之前,有必要先講解一下“任務(wù)椢嗯纾”的概念;
任務(wù)棧
每個應(yīng)用都有一個任務(wù)棧砌左,是用來存放Activity的,功能類似于函數(shù)調(diào)用的棧铺敌,先后順序代表了Activity的出現(xiàn)順序汇歹;比如Activity1-->Activity2-->Activity3,則任務(wù)棧為:
二、啟動模式
(1)standard:每次激活A(yù)ctivity時(startActivity)偿凭,都創(chuàng)建Activity實例产弹,并放入任務(wù)棧;
(2)singleTop:如果某個Activity自己激活自己,即任務(wù)棧棧頂就是該Activity痰哨,則不需要創(chuàng)建胶果,其余情況都要創(chuàng)建Activity實例;
(3)singleTask:如果要激活的那個Activity在任務(wù)棧中存在該實例斤斧,則不需要創(chuàng)建早抠,只需要把此Activity放入棧頂,并把該Activity以上的Activity實例都pop撬讽;
(4)singleInstance:如果應(yīng)用1的任務(wù)棧中創(chuàng)建了MainActivity實例蕊连,如果應(yīng)用2也要激活MainActivity,則不需要創(chuàng)建游昼,兩應(yīng)用共享該Activity實例甘苍;
SingTask的應(yīng)用:
可以用來退出整個應(yīng)用。
將主Activity設(shè)為SingTask模式烘豌,然后在要退出的Activity中轉(zhuǎn)到主Activity载庭,然后重寫主Activity的onNewIntent函數(shù),并在函數(shù)中加上一句finish扇谣。
附:
退出單個Activity方法:
調(diào)用finish
殺死該進程:killprocess(Process.mId)
終止正在運行的虛擬機:system.exit()
退出整個應(yīng)用:
制造拋異常導(dǎo)致整個程序退出
將所有的activity放入到一個list中昧捷,然后在需要退出的時候,將所有的activity罐寨,finish掉
通過廣播來完成退出功能
通過廣播來完成退出功能靡挥,具體實現(xiàn)過程是這樣的:在每個Activity創(chuàng)建時(onCreate時)給Activity注冊一個廣播接收器,當(dāng)退出時發(fā)送該廣播即可鸯绿。