activity有4種不同的啟動方式玻褪,并且啟動效果也各不一樣,好記性不如爛筆頭,寫下來加強(qiáng)印象吧公荧!
- Standard :這是默認(rèn)的啟動方式带射,我們在manifest xml當(dāng)中如果沒有設(shè)置的啟動方式的話默認(rèn)就是standard的方式來啟動activity的,standard方式在你啟動某個(gè)activity時(shí)循狰,系統(tǒng)不會管你這個(gè)實(shí)例是否存在于棧當(dāng)中窟社,都會創(chuàng)建一個(gè)新的實(shí)例。
- SingleTop:如果啟動activity時(shí)發(fā)現(xiàn)它當(dāng)前已經(jīng)在棧頂則不會重新創(chuàng)建一個(gè)實(shí)例如果晤揣,你啟動的那個(gè)activity不再棧頂?shù)脑捑蜁匦聞?chuàng)建一個(gè)activity實(shí)例桥爽。
- SingleTask:當(dāng)你的activity設(shè)置為SingleTask時(shí),每次啟動你的額activity的時(shí)候 就會去棧里面是否存在這個(gè)activity的實(shí)例昧识,如果存在則直接使用這個(gè)實(shí)例钠四,并把這個(gè)activity之上的所有其他的activity統(tǒng)統(tǒng)出棧,如果棧里面沒有這個(gè)activity的實(shí)例的話就創(chuàng)建一個(gè)該activity的實(shí)例跪楞。
-
singleInstance:當(dāng)activity設(shè)置為singleInstance時(shí)缀去,這個(gè)activity會啟動一個(gè)單獨(dú)的返回棧來管理這個(gè)活動。這個(gè)做到的意義在哪里呢甸祭?這個(gè)場景 我們的activity在被其他應(yīng)用調(diào)用時(shí)缕碎,如果其他的應(yīng)用在我們的被調(diào)用的activity上面點(diǎn)擊back,這個(gè)時(shí)候應(yīng)該是返回到他那個(gè)應(yīng)用的而不是我們activity退棧池户,所以使用singleInstance模式就可以解決這個(gè)問題咏雌,在這種模式下會有一個(gè)單獨(dú)的返回棧來管理這個(gè)活動,不管是哪個(gè)應(yīng)用程序來訪問這個(gè)活動校焦,都共用的同一個(gè)返回棧赊抖,也就解決了共享活動實(shí)例的問題。
看圖:
- 比如寨典,你在自己應(yīng)用圖片列表(也就是返回棧A的FirstActivity) 跳轉(zhuǎn)到了 美圖秀秀的activity(返回棧B SecondActivity)里面氛雪,編輯完之后 你點(diǎn)擊發(fā)送,跳轉(zhuǎn)到了你自己的應(yīng)用發(fā)送的界面(ThirdActivity)耸成,這個(gè)時(shí)候你在發(fā)送圖片的界面點(diǎn)擊返回應(yīng)該是返回你自己的activity而不是美圖秀秀的activity當(dāng)中报亩。