android開發(fā)技術(shù)體系之Activity的啟動模式

在總結(jié)Activity的啟動模式前,我們先來認(rèn)真一下android中的任務(wù)與返回棧模式。

什么是任務(wù)?

Android中的任務(wù)是指在執(zhí)行特定作業(yè)時與用戶交互的一系列 Activity。 這些 Activity 按照各自的打開順序排列在堆棧(即返回棧)中涛菠。如圖莉御,即是一個完整的任務(wù)棧流程撇吞。



Activity 和任務(wù)的默認(rèn)行為總結(jié)如下:

1.當(dāng) Activity A 啟動 Activity B 時,Activity A 將會停止礁叔,但系統(tǒng)會保留其狀態(tài)(例如牍颈,滾動位置和已輸入表單中的文本)。如果用戶在處于 Activity B 時按“返回”按鈕琅关,則 Activity A 將恢復(fù)其狀態(tài)煮岁,繼續(xù)執(zhí)行。

2.用戶通過按“主頁”按鈕離開任務(wù)時涣易,當(dāng)前 Activity 將停止且其任務(wù)會進(jìn)入后臺画机。 系統(tǒng)將保留任務(wù)中每個 Activity 的狀態(tài)。如果用戶稍后通過選擇開始任務(wù)的啟動器圖標(biāo)來恢復(fù)任務(wù)新症,則任務(wù)將出現(xiàn)在前臺并恢復(fù)執(zhí)行堆棧頂部的 Activity步氏。

3.如果用戶按“返回”按鈕,則當(dāng)前 Activity 會從堆棧彈出并被銷毀徒爹。 堆棧中的前一個 Activity 恢復(fù)執(zhí)行荚醒。銷毀 Activity 時芋类,系統(tǒng)不會保留該 Activity 的狀態(tài)。

android的多任務(wù)模式中界阁,任務(wù)的狀態(tài)與行為各有不同侯繁,那我們?nèi)绾稳ス芾砣蝿?wù),并且控制任務(wù)內(nèi)部元素的狀態(tài)呢泡躯? 這就講到了Activity的啟動模式贮竟、

Activity的啟動模式

1.定義啟動模式

? ? Activity的啟動模式定義有兩種, 一種在AndroidManifast.xml中定義launchMode屬性,一種即在startActivity的Intent參數(shù)中聲明新 Activity 如何(或是否)與當(dāng)前任務(wù)關(guān)聯(lián)较剃。 如果一個Activity在清單中定義了其關(guān)聯(lián)方式坝锰,并且startActivity中的Intent也已經(jīng)聲明,則Intent中定義的優(yōu)先級要高于清單文件重付。

2.啟動模式介紹

? ?清單文件中的屬性:

? ? ? ? "standard":?默認(rèn)顷级。系統(tǒng)在啟動 Activity 的任務(wù)中創(chuàng)建 Activity 的新實例并向其傳送 Intent。Activity 可以多次實例化确垫,而每個實例均可屬于不同的任務(wù)弓颈,并且一個任務(wù)可以擁有多個實例。

? ? ? ? "singleTop":如果當(dāng)前任務(wù)的頂部已存在 Activity 的一個實例删掀,則系統(tǒng)會通過調(diào)用該實例的onNewIntent()方法向其傳送 Intent翔冀,而不是創(chuàng)建 Activity 的新實例。Activity 可以多次實例化披泪,而每個實例均可屬于不同的任務(wù)纤子,并且一個任務(wù)可以擁有多個實例(但前提是位于返回棧頂部的 Activity 并不是 Activity 的現(xiàn)有實例)。

例如款票,假設(shè)任務(wù)的返回棧包含根 Activity A 以及 Activity B控硼、C 和位于頂部的 D(堆棧是 A-B-C-D;D 位于頂部)艾少。收到針對 D 類 Activity 的 Intent卡乾。如果 D 具有默認(rèn)的"standard"啟動模式,則會啟動該類的新實例缚够,且堆棧會變成 A-B-C-D-D幔妨。但是,如果 D 的啟動模式是"singleTop"谍椅,則 D 的現(xiàn)有實例會通過onNewIntent()接收 Intent误堡,因為它位于堆棧的頂部;而堆棧仍為 A-B-C-D雏吭。但是锁施,如果收到針對 B 類 Activity 的 Intent,則會向堆棧添加 B 的新實例堆棧變成了A-B-C-D-B,即便其啟動模式為"singleTop"也是如此沾谜。

? ? ? ?"singleTask" :系統(tǒng)創(chuàng)建新任務(wù)并實例化位于新任務(wù)底部的 Activity膊毁。但是,如果該 Activity 的一個實例已存在于一個單獨的任務(wù)中基跑,則系統(tǒng)會通過調(diào)用現(xiàn)有實例的onNewIntent()方法向其傳送 Intent婚温,而不是創(chuàng)建新實例。一次只能存在 Activity 的一個實例媳否。?:盡管 Activity 在新任務(wù)中啟動栅螟,但是用戶按“返回”按鈕仍會返回到前一個 Activity。

? ? ? "singleInstance":與"singleTask"相同篱竭,只是系統(tǒng)不會將任何其他 Activity 啟動到包含實例的任務(wù)中力图。該 Activity 始終是其任務(wù)唯一僅有的成員;由此 Activity 啟動的任何 Activity 均在單獨的任務(wù)中打開掺逼。

Intent中的參數(shù):

? ? FLAG_ACTIVITY_NEW_TASK?: 同清單屬性中的singleTask

? ? FLAG_ACTIVITY_SINGLE_TOP?: 同清單屬性中的singleTop

? ??FLAG_ACTIVITY_CLEAR_TOP : 如果正在啟動的 Activity 已在當(dāng)前任務(wù)中運行吃媒,則會銷毀當(dāng)前任務(wù)頂部的所有 Activity,并通過onNewIntent()將此 Intent 傳遞給 Activity 已恢復(fù)的實例(現(xiàn)在位于頂部)吕喘,而不是啟動該 Activity 的新實例赘那。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市氯质,隨后出現(xiàn)的幾起案子募舟,更是在濱河造成了極大的恐慌,老刑警劉巖闻察,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拱礁,死亡現(xiàn)場離奇詭異,居然都是意外死亡辕漂,警方通過查閱死者的電腦和手機(jī)呢灶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钮热,“玉大人填抬,你說我怎么就攤上這事∷砥冢” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵赘娄,是天一觀的道長仆潮。 經(jīng)常有香客問我,道長遣臼,這世上最難降的妖魔是什么性置? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮揍堰,結(jié)果婚禮上鹏浅,老公的妹妹穿的比我還像新娘嗅义。我一直安慰自己,他們只是感情好隐砸,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布之碗。 她就那樣靜靜地躺著,像睡著了一般季希。 火紅的嫁衣襯著肌膚如雪褪那。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天式塌,我揣著相機(jī)與錄音博敬,去河邊找鬼。 笑死峰尝,一個胖子當(dāng)著我的面吹牛偏窝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播武学,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼囚枪,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了劳淆?” 一聲冷哼從身側(cè)響起链沼,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎沛鸵,沒想到半個月后括勺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡曲掰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年疾捍,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片栏妖。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡乱豆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吊趾,到底是詐尸還是另有隱情宛裕,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布论泛,位于F島的核電站揩尸,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏屁奏。R本人自食惡果不足惜岩榆,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧勇边,春花似錦犹撒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至怀浆,卻和暖如春谊囚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背执赡。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工镰踏, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人沙合。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓奠伪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親首懈。 傳聞我的和親對象是個殘疾皇子绊率,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

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