android launchmode singleinstance問題

來源:互聯網
上載者:User

標籤:

 

問題描述

最近測試關於launchmode的四種方式

預設模式 top singletask 都已經瞭解了

唯獨這個instance模式

我的問題是

我們只作2個activity的假設A和B,其中A為instance的 B為標準模式

啟動過程為A -> B -> A ->B

這個過程為什麼B也只是一個執行個體了, B是標準模式,應該每次重新建立新的執行個體啊?

 

誰幫我解答一下這個問題,最好再做幾個例子的測試,複雜一點的,能讓我充分理解instance模式的

 

---------------------------

答:

1.對你問題描述的重複:

應用程式中有兩個activity,activityA和activtiyB,activityA的啟動模式為"SingleInstance",activityB的啟動模式為"Standard",啟動順序為activityA->activityB->activityA->activityB,問為什麼應用程式中activityB只有一個執行個體?

回答:activityB為"Standard"啟動模式,按照題目中描述的啟動順序,activityB的新執行個體會有兩個,

(1)activityB的新執行個體會和發送Intent啟動它的組件在同一個task內

(2)activityB的新執行個體會在這個task內運行

(3)activityA為"SingleInstance"啟動模式,它只會產生一個執行個體,並且這個執行個體在task中是根項目,這個task中不會再有新的元素,而兩個新的activityB執行個體和這個activityA的執行個體不會在同一個task中

(4)activityB的這兩個新執行個體會在同一個task中,除非啟動activityB的Intent中包括參數FLAG_ACTIVITY_NEW_TASK,那麼這兩個activityB的新執行個體會各自在一個新的task中運行。

2.你在問題中提到,"最好再做幾個例子的測試,複雜一點,能讓我充分理解instance模式的",我想先在理論分析上講清楚幾個例子,之後如果有時間,再設計幾個例子demo協助你理解:

 

android平台中activity有如下四種啟動模式,

"Standard"(預設)

"SingleTop"

"SingleTask"

"SingleInstance"

(1)"Standard"模式:該模式的Activity可以建立多個執行個體,且每個task都可以有多個執行個體,一個執行個體運行在哪個task內取決於給它發送Intent的組件運行在那個task內;

(2)"SingleTop"模式:該模式的Activity如果在task棧頂的話,則不產生新的該Activity的執行個體,直接使用棧頂的執行個體,否則,產生該Activity的執行個體;

比如現在task棧元素為A-B-C-D(D在棧頂),這時候給D發一個啟動Intent,如果D是"SingleTop"模式的話,則不會生產D的新執行個體,棧狀態仍為A-B-C-D;如果這時候寄件者給B發送Intent,不管B的launch mode是"Standard" 還是 "SingleTop" ,都會產生B的新執行個體,棧狀態變為A-B-C-D-B;

(3)"SingleTask"模式:只有一個task中會有,如果已經有其他的task並且包含該執行個體,那就直接調用那個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

 

android launchmode singleinstance問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.