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