android Task 學習筆記

來源:互聯網
上載者:User

task是什嗎?

task的作用?

task與stack的關係?

task什麼時候建立?

        task是一組Activity執行個體的集合,這些執行個體是為了完成了一項特定的操作,按被啟用的先後順序存放在

一個與Task相對應的Stack中,這些執行個體可以是一個屬於一個application的,也一個屬於不同的的application的

,比如在寫簡訊新增連絡人...時需要開啟通訊錄的裡面的Activity,而從寫簡訊到新增連絡人...再到後面的發送,

這一串的動作都是屬於一個task。

         android的提供task機制是為了提高使用者體驗,比如寫簡訊時新增連絡人...,寫簡訊是屬於sms application,

而新增連絡人...列表是屬於contacts application的,雖然是屬於兩個不同的application,但使用者添加完連絡人後

又回到寫簡訊的介面,感覺就像一個application,用起來非常的流暢,這就是task的功勞。

         當我們在homescreen中點擊一個icon啟動一個application時(此處假定此application在後台沒有運行),

第一個啟動的Activity會建立一個Task,每個Activity都會有一個affinity屬性,來指定此Activity是屬於哪個task,

預設的情況下一個application中的Activity的affinity屬性都是相同的,即一個application中activity是屬於同一個task的,

但這隻是預設的情況,如果在Activity在AndroidManifest.xml註冊時,添加屬性

 android:taskAffinity="com.android.xxx" //此處的屬性名稱不能與activity所在的包相同 android:allowTaskReparenting="true" 

當Activity在被啟用時,會另外建立一個Task,即一個application可以對應有多個task。雖然是建立了一個Task,

但是在按返回鍵時,還是會回到之前的activity,看google官方註解:

Note: Although the activity starts in a new task, theBack button still returns the user to the previous activity.

以下的兩種Activity啟動模式也會建立Task:

singleTask:這是Activity的單任務啟動模式,即當Activity被啟用時,會先判斷是否有執行個體已存在已有的task中,

           如沒有執行個體,則建立一個Task,Activity在此task中啟動;如已有執行個體存在了,則把執行個體所在的Task作為一個整體

           從後台移到前台,見:

          

          這裡有兩種情況:一個是要被啟用的Activity執行個體在Task所對應的棧的棧頂;二是被啟用的Activity執行個體不在task的

          所對應棧的棧頂,此時就把此執行個體推到棧頂,在此執行個體上面的執行個體都會被推出棧而登出掉

singleInstance: 這是Activity單一實例啟動模式, 即第一次建立該執行個體的時候,會建立一個專屬改執行個體的task,

            此task中沒會有其他的執行個體,如果此task處於後台,再啟用此Activity時,就會複用該執行個體,

            不會建立新執行個體和新task。       

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.