android launchmode singleinstance问题
?
問題描述
最近測試關(guān)于launchmode的四種方式
默認(rèn)模式 top singletask 都已經(jīng)了解了
唯獨這個instance模式
我的問題是
我們只作2個activity的假設(shè)A和B,其中A為instance的 B為標(biāo)準(zhǔn)模式
啟動過程為A -> B -> A ->B
這個過程為什么B也只是一個實例了, B是標(biāo)準(zhǔn)模式,應(yīng)該每次重新創(chuàng)建新的實例啊?
?
誰幫我解答一下這個問題,最好再做幾個例子的測試,復(fù)雜一點的,能讓我充分理解instance模式的
?
---------------------------
答:
1.對你問題描述的重復(fù):
應(yīng)用程序中有兩個activity,activityA和activtiyB,activityA的啟動模式為"SingleInstance",activityB的啟動模式為"Standard",啟動順序為activityA->activityB->activityA->activityB,問為什么應(yīng)用程序中activityB只有一個實例?
回答:activityB為"Standard"啟動模式,按照題目中描述的啟動順序,activityB的新實例會有兩個,
(1)activityB的新實例會和發(fā)送Intent啟動它的組件在同一個task內(nèi)
(2)activityB的新實例會在這個task內(nèi)運行
(3)activityA為"SingleInstance"啟動模式,它只會產(chǎn)生一個實例,并且這個實例在task中是根元素,這個task中不會再有新的元素,而兩個新的activityB實例和這個activityA的實例不會在同一個task中
(4)activityB的這兩個新實例會在同一個task中,除非啟動activityB的Intent中包括參數(shù)FLAG_ACTIVITY_NEW_TASK,那么這兩個activityB的新實例會各自在一個新的task中運行。
2.你在問題中提到,"最好再做幾個例子的測試,復(fù)雜一點,能讓我充分理解instance模式的",我想先在理論分析上講清楚幾個例子,之后如果有時間,再設(shè)計幾個例子demo幫助你理解:
?
android平臺中activity有如下四種啟動模式,
"Standard"(默認(rèn))
"SingleTop"
"SingleTask"
"SingleInstance"
(1)"Standard"模式:該模式的Activity可以創(chuàng)建多個實例,且每個task都可以有多個實例,一個實例運行在哪個task內(nèi)取決于給它發(fā)送Intent的組件運行在那個task內(nèi);
(2)"SingleTop"模式:該模式的Activity如果在task棧頂?shù)脑?#xff0c;則不生成新的該Activity的實例,直接使用棧頂?shù)膶嵗?#xff0c;否則,生成該Activity的實例;
比如現(xiàn)在task棧元素為A-B-C-D(D在棧頂),這時候給D發(fā)一個啟動Intent,如果D是"SingleTop"模式的話,則不會生產(chǎn)D的新實例,棧狀態(tài)仍為A-B-C-D;如果這時候發(fā)送者給B發(fā)送Intent,不管B的launch mode是"Standard" 還是 "SingleTop" ,都會生成B的新實例,棧狀態(tài)變?yōu)锳-B-C-D-B;
(3)"SingleTask"模式:只有一個task中會有,如果已經(jīng)有其他的task并且包含該實例,那就直接調(diào)用那個task的實例;如果沒有任何task中有該Activity的實例,則新建一個task,將該實例裝入,作為task的根元素,但是該實例不會獨占該task;
(4)"SingleInstance"模式:該Activity實例會獨占task,其它Activity不能存在那個task里,如果它啟動了一個新的Activity,不管新的Activity實例的launch mode 如何,新的Activity都將會到別的task里運行。
?
3.最后附上一個鏈接,方便你更好地理解
http://blog.csdn.net/feng88724/article/details/6412638
?
總結(jié)
以上是生活随笔為你收集整理的android launchmode singleinstance问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linxu用户登录监测
- 下一篇: openstack migrate im