日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android launchmode singleinstance问题

發(fā)布時間:2025/4/5 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android launchmode singleinstance问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

問題描述

最近測試關(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。