Android中intent啟動Activity中intent.setFlags()的作用

來源:互聯網
上載者:User

標籤:

Intent.setFlags()函數用法:

Intent的常用Flag參數:

FLAG_ACTIVITY_CLEAR_TOP:
例如現在的棧情況為:A B C D 。D此時通過intent跳轉到B,如果這個intent添加FLAG_ACTIVITY_CLEAR_TOP標記,則棧情況變為:A B。如果沒有添加這個標記,則棧情況將會變成:A B C D B。也就是說,如果添加了FLAG_ACTIVITY_CLEAR_TOP標記,並且目標Activity在棧中已經存在,則將會把位於該目標activity之上的activity從棧中彈出銷毀。這跟上面把B的Launch mode設定成singleTask類似。

FLAG_ACTIVITY_NEW_TASK:
例如現在棧1的情況是:A B C。C通過intent跳轉到D,並且這個intent添加了FLAG_ACTIVITY_NEW_TASK標記,如果D這個Activity在Manifest.xml中的聲明中添加了Task affinity,並且和棧1的affinity不同,系統首先會尋找有沒有和D的Task affinity相同的task棧存在,如果有存在,將D壓入那個棧,如果不存在則會建立一個D的affinity的棧將其壓入。如果D的Task affinity預設沒有設定,或者和棧1的affinity相同,則會把其壓入棧1,變成:A B C D,這樣就和不加FLAG_ACTIVITY_NEW_TASK標記效果是一樣的了。注意如果試圖從非activity的非正常途徑啟動一個activity,比如從一個service中啟動一個activity,則intent必須要添加FLAG_ACTIVITY_NEW_TASK標記。

FLAG_ACTIVITY_NO_HISTORY:
例如現在棧情況為:A B C。C通過intent跳轉到D,這個intent添加FLAG_ACTIVITY_NO_HISTORY標誌,則此時介面顯示D的內容,但是它並不會壓入棧中。如果按返回鍵,返回到C,棧的情況還是:A B C。如果此時D中又跳轉到E,棧的情況變為:A B C E,此時按返回鍵會回到C,因為D根本就沒有被壓入棧中。

FLAG_ACTIVITY_SINGLE_TOP:和上面Activity的Launch mode的singleTop類似。如果某個intent添加了這個標誌,並且這個intent的目標activity就是棧頂的activity,那麼將不會建立一個執行個體壓入棧中。
Activity的主要屬性:(在 AndroidManifest.xml中 <activity  android:XXX  />)
allowTaskReparenting:設定成true時,和Intent的FLAG_ACTIVITY_NEW_TASK標記類似。
alwaysRetainTaskStat:   如果使用者長時間將某個task移入後台,則系統會將該task的棧內容彈出只剩下棧底的activity,此時使用者再返回,則只能看到根activity了。如果棧底的activity的這個屬性設定成true,則將阻止這一行為,從而保留所有的棧內容。
clearTaskOnLaunch:根activity的這個屬性設定成true時,和上面的alwaysRetainTaskStat的屬性為true情況搞好相反。
finishOnTaskLaunch:對於任何activity,如果它的這個屬性設定成true,則當task被放置到後台,然後重新啟動後,該activity將不存在了。

Android中intent啟動Activity中intent.setFlags()的作用

聯繫我們

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