Intent Flag介绍 intent.addFlags()
FLAG_ACTIVITY_CLEAR_TOP
如果設(shè)置,并且這個Activity已經(jīng)在當(dāng)前的Task中運行,因此,不再是重新啟動一個這個Activity的實例,而是在這個Activity上方的所有Activity都將關(guān)閉,然后這個Intent會作為一個新的Intent投遞到老的Activity(現(xiàn)在位于頂端)中。 例如,假設(shè)一個Task中包含這些Activity:A,B,C,D。如果D調(diào)用了startActivity(),并且包含一個指向Activity B的Intent,那么,C和D都將結(jié)束,然后B接收到這個Intent,因此,目前stack的狀況是:A,B。 上例中正在運行的Activity B既可以在onNewIntent()中接收到這個新的Intent,也可以把自己關(guān)閉然后重新啟動來接收這個Intent。如果它的啟動模式聲明為“multiple”(默認(rèn)值),并且你沒有在這個Intent中設(shè)置FLAG_ACTIVITY_SINGLE_TOP標(biāo)志,那么它將關(guān)閉然后重新創(chuàng)建;對于其它的啟動模式,或者在這個Intent中設(shè)置FLAG_ACTIVITY_SINGLE_TOP標(biāo)志,都將把這個Intent投遞到當(dāng)前這個實例的onNewIntent()中。 這個啟動模式還可以與FLAG_ACTIVITY_NEW_TASK結(jié)合起來使用:用于啟動一個Task中的根Activity,它會把那個Task中任何運行的實例帶入前臺,然后清除它直到根Activity。這非常有用,例如,當(dāng)從Notification Manager處啟動一個Activity。
FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
如果設(shè)置,這將在Task的Activity stack中設(shè)置一個還原點,當(dāng)Task恢復(fù)時,需要清理Activity。也就是說,下一次Task帶著FLAG_ACTIVITY_RESET_TASK_IF_NEEDED標(biāo)記進入前臺時(典型的操作是用戶在主畫面重啟它),這個Activity和它之上的都將關(guān)閉,以至于用戶不能再返回到它們,但是可以回到之前的Activity。 這在你的程序有分割點的時候很有用。例如,一個e-mail應(yīng)用程序可能有一個操作是查看一個附件,需要啟動圖片瀏覽Activity來顯示。這個Activity應(yīng)該作為e-mail應(yīng)用程序Task的一部分,因為這是用戶在這個Task中觸發(fā)的操作。然而,當(dāng)用戶離開這個Task,然后從主畫面選擇e-mail app,我們可能希望回到查看的會話中,但不是查看圖片附件,因為這讓人困惑。通過在啟動圖片瀏覽時設(shè)定這個標(biāo)志,瀏覽及其它啟動的Activity在下次用戶返回到mail程序時都將全部清除。
FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
如果設(shè)置,新的Activity不會在最近啟動的Activity的列表中保存。
FLAG_ACTIVITY_FORWARD_RESULT
如果設(shè)置,并且這個Intent用于從一個存在的Activity啟動一個新的Activity,那么,這個作為答復(fù)目標(biāo)的Activity將會傳到這個新的Activity中。這種方式下,新的Activity可以調(diào)用setResult(int),并且這個結(jié)果值將發(fā)送給那個作為答復(fù)目標(biāo)的Activity。
FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
這個標(biāo)志一般不由應(yīng)用程序代碼設(shè)置,如果這個Activity是從歷史記錄里啟動的(常按HOME鍵),那么,系統(tǒng)會幫你設(shè)定。
FLAG_ACTIVITY_MULTIPLE_TASK
不要使用這個標(biāo)志,除非你自己實現(xiàn)了應(yīng)用程序啟動器。與FLAG_ACTIVITY_NEW_TASK結(jié)合起來使用,可以禁用把已存的Task送入前臺的行為。當(dāng)設(shè)置時,新的Task總是會啟動來處理Intent,而不管這是是否已經(jīng)有一個Task可以處理相同的事情。 由于默認(rèn)的系統(tǒng)不包含圖形Task管理功能,因此,你不應(yīng)該使用這個標(biāo)志,除非你提供給用戶一種方式可以返回到已經(jīng)啟動的Task。 如果FLAG_ACTIVITY_NEW_TASK標(biāo)志沒有設(shè)置,這個標(biāo)志被忽略。
FLAG_ACTIVITY_NEW_TASK
如果設(shè)置,這個Activity會成為歷史stack中一個新Task的開始。一個Task(從啟動它的Activity到下一個Task中的Activity)定義了用戶可以遷移的Activity原子組。Task可以移動到前臺和后臺;在某個特定Task中的所有Activity總是保持相同的次序。 這個標(biāo)志一般用于呈現(xiàn)“啟動”類型的行為:它們提供用戶一系列可以單獨完成的事情,與啟動它們的Activity完全無關(guān)。 使用這個標(biāo)志,如果正在啟動的Activity的Task已經(jīng)在運行的話,那么,新的Activity將不會啟動;代替的,當(dāng)前Task會簡單的移入前臺。參考FLAG_ACTIVITY_MULTIPLE_TASK標(biāo)志,可以禁用這一行為。 這個標(biāo)志不能用于調(diào)用方對已經(jīng)啟動的Activity請求結(jié)果。
FLAG_ACTIVITY_NO_ANIMATION
如果在Intent中設(shè)置,并傳遞給Context.startActivity()的話,這個標(biāo)志將阻止系統(tǒng)進入下一個Activity時應(yīng)用Acitivity遷移動畫。這并不意味著動畫將永不運行——如果另一個Activity在啟動顯示之前,沒有指定這個標(biāo)志,那么,動畫將被應(yīng)用。這個標(biāo)志可以很好的用于執(zhí)行一連串的操作,而動畫被看作是更高一級的事件的驅(qū)動。
FLAG_ACTIVITY_NO_HISTORY
如果設(shè)置,新的Activity將不再歷史stack中保留。用戶一離開它,這個Activity就關(guān)閉了。這也可以通過設(shè)置noHistory特性。
FLAG_ACTIVITY_NO_USER_ACTION
如果設(shè)置,作為新啟動的Activity進入前臺時,這個標(biāo)志將在Activity暫停之前阻止從最前方的Activity回調(diào)的onUserLeaveHint()。 典型的,一個Activity可以依賴這個回調(diào)指明顯式的用戶動作引起的Activity移出后臺。這個回調(diào)在Activity的生命周期中標(biāo)記一個合適的點,并關(guān)閉一些Notification。 如果一個Activity通過非用戶驅(qū)動的事件,如來電或鬧鐘,啟動的,這個標(biāo)志也應(yīng)該傳遞給Context.startActivity,保證暫停的Activity不認(rèn)為用戶已經(jīng)知曉其Notification。
FLAG_ACTIVITY_PREVIOUS_IS_TOP
If set and this intent is being used to launch a new activity from an existing one, the current activity will not be counted as the top activity for deciding whether the new intent should be delivered to the top instead of starting a new one. The previous activity will be used as the top, with the assumption being that the current activity will finish itself immediately.
FLAG_ACTIVITY_REORDER_TO_FRONT
如果在Intent中設(shè)置,并傳遞給Context.startActivity(),這個標(biāo)志將引發(fā)已經(jīng)運行的Activity移動到歷史stack的頂端。 例如,假設(shè)一個Task由四個Activity組成:A,B,C,D。如果D調(diào)用startActivity()來啟動Activity B,那么,B會移動到歷史stack的頂端,現(xiàn)在的次序變成A,C,D,B。如果FLAG_ACTIVITY_CLEAR_TOP標(biāo)志也設(shè)置的話,那么這個標(biāo)志將被忽略。
FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
If set, and this activity is either being started in a new task or bringing to the top an existing task, then it will be launched as the front door of the task. This will result in the application of any affinities needed to have that task in the proper state (either moving activities to or from it), or simply resetting that task to its initial state if needed.
FLAG_ACTIVITY_SINGLE_TOP
如果設(shè)置,當(dāng)這個Activity位于歷史stack的頂端運行時,不再啟動一個新的。
轉(zhuǎn)載自網(wǎng)易博客 ╅藍色さ夢幻 的博客
原博客地址 Intent Flag介紹 intent.addFlags()
總結(jié)
以上是生活随笔為你收集整理的Intent Flag介绍 intent.addFlags()的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android仿苹果SwitchButt
- 下一篇: android R文件丢失