Android開發筆記——Activity與Task

來源:互聯網
上載者:User
Activity與Task

    一個application包含多個Activity,這些Activity預設都有親屬關係,它們同屬一個task,當啟動Activity時,它們被放到了同一個task中,task是一個棧,一個task通常對應一個application中的多個activity,例如開啟郵件程式,該程式包含多個activity介面,他們都在同一個task中,但也可能對應的是不同application中的多個activity,例如郵件程式中,當查看圖片附件時,可能要開啟圖片查看程式中的activity,放該activity到當前的task中。

一個Task中的activity總是按照後進先出的順序進行,有時我們可能希望開啟的新Activity在一個新的task中,而不是和現有的activity在同一個task中,我們可以有兩種方式做到

Intent方式:intent.setFlag(Intent.FLAG_NEW_TASK);//不適合startActivityForResult()

Xml方式:設定activity的launchMode屬性

<activity android:name=".GongGaoListActivity"

                  android:launchMode="singleTask"

                  android:label="@string/app_name">

        </activity>

這時啟動新的Activity時,系統會尋找與新Activity親屬關係相同的task,放到其中,複用這個task,如果找不到,就會為新Activity建立一個task。

有時我們可能需要不管task中有多少activity,不管他們如何排序,但總是從一個固定的Activity開始執行。這種情況,也是指定Activity的啟動模式為singleTask。

 

·  棧的清除:

預設情況下,如果使用者離開一個task較長時間,系統會自動清除除了棧底Activity之外的其他Activity,可以通過設定該棧底Activity的屬性來改變這種情況。

 

android:alwaysRetainTaskState:

設定為true,一直保留task狀態,不清除

 

android:clearTaskOnLaunch:

設定為true,使用者離開應用程式再次返回時,系統會清除除根Activity之外的所有Activity

 

android:finishOnTaskLaunch:

設定為true,使用者離開程式時,所有的Activity被清除。

相關文章

聯繫我們

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