intent.setFlags方法中的參數(shù)值含義

FLAG_ACTIVITY_CLEAR_TOP

一. intent.setFlags()方法中的參數(shù)值含義:
1.FLAG_ACTIVITY_CLEAR_TOP:例如現(xiàn)在的棧情況為:A B C D 。D此時(shí)通過(guò)intent跳轉(zhuǎn)到B,如果這個(gè)intent添加FLAG_ACTIVITY_CLEAR_TOP標(biāo)記加叁,則棧情況變?yōu)椋篈 B钱豁。如果沒(méi)有添加這個(gè)標(biāo)記判族,則棧情況將會(huì)變成:A B C D B臀稚。也就是說(shuō)疫粥,如果添加了FLAG_ACTIVITY_CLEAR_TOP標(biāo)記蟆湖,并且目標(biāo)Activity在棧中已經(jīng)存在,則將會(huì)把位于該目標(biāo)activity之上的activity從棧中彈出銷毀玻粪。這跟上面把B的Launch mode設(shè)置成singleTask類似隅津。簡(jiǎn)而言之,跳轉(zhuǎn)到的activity若已在棧中存在劲室,則將其上的activity都銷掉伦仍。

FLAG_ACTIVITY_NEW_TASK

2.FLAG_ACTIVITY_NEW_TASK:例如現(xiàn)在棧1的情況是:A B C。C通過(guò)intent跳轉(zhuǎn)到D很洋,并且這個(gè)intent添加了FLAG_ACTIVITY_NEW_TASK標(biāo)記充蓝,如果D這個(gè)Activity在Manifest.xml中的聲明中添加了Task affinity,系統(tǒng)首先會(huì)查找有沒(méi)有和D的Task affinity相同的task棧存在喉磁,如果有存在谓苟,將D壓入那個(gè)棧,如果不存在則會(huì)新建一個(gè)D的affinity的棧將其壓入协怒。如果D的Task affinity默認(rèn)沒(méi)有設(shè)置涝焙,則會(huì)把其壓入棧1,變成:A B C D孕暇,這樣就和不加FLAG_ACTIVITY_NEW_TASK標(biāo)記效果是一樣的了仑撞。注意如果試圖從非activity的非正常途徑啟動(dòng)一個(gè)activity(例見(jiàn)下文“intent.setFlags()方法中參數(shù)的用例”),比如從一個(gè)service中啟動(dòng)一個(gè)activity妖滔,則intent比如要添加FLAG_ACTIVITY_NEW_TASK標(biāo)記(編者按:activity要存在于activity的棧中隧哮,而非activity的途徑啟動(dòng)activity時(shí)必然不存在一個(gè)activity的棧,所以要新起一個(gè)棧裝入啟動(dòng)的activity)座舍。簡(jiǎn)而言之沮翔,跳轉(zhuǎn)到的activity根據(jù)情況,可能壓在一個(gè)新建的棧中簸州。

FLAG_ACTIVITY_NO_HISTORY

3.FLAG_ACTIVITY_NO_HISTORY:例如現(xiàn)在棧情況為:A B C鉴竭。C通過(guò)intent跳轉(zhuǎn)到D,這個(gè)intent添加FLAG_ACTIVITY_NO_HISTORY標(biāo)志岸浑,則此時(shí)界面顯示D的內(nèi)容搏存,但是它并不會(huì)壓入棧中。如果按返回鍵矢洲,返回到C璧眠,棧的情況還是:A B C。如果此時(shí)D中又跳轉(zhuǎn)到E,棧的情況變?yōu)椋篈 B C E责静,此時(shí)按返回鍵會(huì)回到C袁滥,因?yàn)镈根本就沒(méi)有被壓入棧中。簡(jiǎn)而言之灾螃,跳轉(zhuǎn)到的activity不壓在棧中题翻。

FLAG_ACTIVITY_SINGLE_TOP

4.FLAG_ACTIVITY_SINGLE_TOP:和Activity的Launch mode的singleTop類似。如果某個(gè)intent添加了這個(gè)標(biāo)志腰鬼,并且這個(gè)intent的目標(biāo)activity就是棧頂?shù)腶ctivity嵌赠,那么將不會(huì)新建一個(gè)實(shí)例壓入棧中。簡(jiǎn)而言之熄赡,目標(biāo)activity已在棧頂則跳轉(zhuǎn)過(guò)去姜挺,不在棧頂則在棧頂新建activity。

二.intent.setFlags()方法中參數(shù)的用例:
很多人使用startActivity時(shí)候彼硫,會(huì)碰到如下的異常:Caused by: Android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?都知道炊豪,Context中有一個(gè)startActivity方法,Activity繼承自Context拧篮,重載了startActivity方法词渤。如果使用Activity的startActivity方法,不會(huì)有任何限制他托,而如果使用Context的startActivity方法的話掖肋,就需要開啟一個(gè)新的task(編者按:參見(jiàn)一.2.的編者按),遇到上面那個(gè)異常的赏参,都是因?yàn)槭褂昧薈ontext的startActivity方法志笼。解決辦法是:Java代碼中加一個(gè)flag,即intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)把篓。這樣就可以在新的task里面啟動(dòng)這個(gè)Activity了纫溃。

總結(jié)

今天遇到了購(gòu)物下單,跳了好幾個(gè)activity之后需要回到首頁(yè)韧掩,如果要一個(gè)一個(gè)關(guān)閉的話會(huì)很麻煩紊浩,所以就想到了Flag的屬性設(shè)置,使用了FLAG_ACTIVITY_CLEAR_TOP疗锐,我就調(diào)查了解以下坊谁。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市滑臊,隨后出現(xiàn)的幾起案子口芍,更是在濱河造成了極大的恐慌,老刑警劉巖雇卷,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鬓椭,死亡現(xiàn)場(chǎng)離奇詭異颠猴,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)小染,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門翘瓮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人裤翩,你說(shuō)我怎么就攤上這事资盅。” “怎么了踊赠?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵律姨,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我臼疫,道長(zhǎng),這世上最難降的妖魔是什么扣孟? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任烫堤,我火速辦了婚禮,結(jié)果婚禮上凤价,老公的妹妹穿的比我還像新娘鸽斟。我一直安慰自己,他們只是感情好利诺,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布富蓄。 她就那樣靜靜地躺著,像睡著了一般慢逾。 火紅的嫁衣襯著肌膚如雪立倍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天侣滩,我揣著相機(jī)與錄音口注,去河邊找鬼。 笑死君珠,一個(gè)胖子當(dāng)著我的面吹牛寝志,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播策添,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼材部,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了唯竹?” 一聲冷哼從身側(cè)響起乐导,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎摩窃,沒(méi)想到半個(gè)月后兽叮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芬骄,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年鹦聪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了账阻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡泽本,死狀恐怖淘太,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情规丽,我是刑警寧澤蒲牧,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站赌莺,受9級(jí)特大地震影響冰抢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜艘狭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一挎扰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧巢音,春花似錦遵倦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至傲绣,卻和暖如春掠哥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背斜筐。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工龙致, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人顷链。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓目代,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親嗤练。 傳聞我的和親對(duì)象是個(gè)殘疾皇子榛了,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容