android開發(fā)工作經(jīng)驗總結(jié)-activity

本人目前4年開發(fā)經(jīng)驗,奈何還是一個菜鳥宽气,之前一直沒有更新過随常,現(xiàn)在想著寫一些東西,挖掘一下自己的大腦萄涯,用來當(dāng)作日記绪氛,記錄一下自己這些年來的工作經(jīng)驗

一.生命周期與啟動模式????????

如果單純的談生命周期來講,想必對于android開發(fā)來說涝影,再簡單不過枣察,如下圖

如果加上啟動模式 ,可能生命周期會有一些變化燃逻,啟動模式包括四種??

1.標(biāo)準(zhǔn)模式 -standard? ? 在清單文件中聲明序目,如果未聲明,默認(rèn)也是這種模式伯襟,即每次啟動標(biāo)準(zhǔn)模式的activit都會重新創(chuàng)建一個新的實例猿涨,不管任務(wù)棧中是否存在,都會重新創(chuàng)建姆怪,并且每個新的實例都會調(diào)用完整的生命周期叛赚。誰啟動了這個Activity,那么這個Activity實例就運行在啟動它的那個Activity所在的棧中?稽揭。根據(jù)上面所說红伦,我們就了解了當(dāng)用ApplicationContext啟動或者在Service中直接調(diào)用startActivity啟動標(biāo)準(zhǔn)模式Activity時報如下錯誤的原因了。

android.util.AndroidRuntimeException: Calling startActivity?from?outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is?this?really what you want?

上面錯誤的原因就是被啟動的Activity是標(biāo)準(zhǔn)模式淀衣,而發(fā)起啟動請求的Context不是Activity的Context昙读,未存在Activity棧,而每個Activity實例啟動銷毀都需要進(jìn)棧出棧膨桥,用棧來存儲Activity的信息蛮浑,所以非Activity Context需要設(shè)置FLAG_ACTIVITY_NEW_TASK屬性,啟動一個新的Activity棧只嚣。

2.? ?棧頂復(fù)用模式-sing top:在這種模式下沮稚,如果新啟動的Activity已經(jīng)位于任務(wù)戰(zhàn)的棧頂,那么此Activity不會被重新創(chuàng)建册舞,只會重新調(diào)用?onNewIntent?方法蕴掏,這個Activity的onCreate、onStart都不會被系統(tǒng)調(diào)用。如果新Activity實例已經(jīng)存在但不在棧頂盛杰,那么重新創(chuàng)建 Activity 并放入棧頂挽荡。

3.棧內(nèi)復(fù)用-singTask:也叫單例模式,一個棧中只允許存在同樣activity的一種實例即供,無論是否在棧頂定拟,只要存在,就不會重新創(chuàng)建實例逗嫡,和singtop一樣青自,也會調(diào)用onNewIntent方法

需要注意的是:如果一個Activity被設(shè)置為singleTask模式,那么當(dāng)棧內(nèi)已經(jīng)存在該Activity實例時驱证,再啟動該Activity延窜,會讓該Activity實例之上的Activity被出棧。舉個例子:有四個Activity 分別是 A抹锄、B逆瑞、C和D,A是singleTask模式,當(dāng)先執(zhí)行A->B->C->D時祈远,A在棧內(nèi)已存在實例呆万,此時再調(diào)用D->A啟動A時,會讓A實例之上的B车份、C谋减、D都出棧。一般項目的MainActivity都設(shè)置為此模式扫沼,方便放回首頁和清空中間Activity出爹。

4.單實例模式-singleInstance:這是一種加強的singleTask模式,它除了具有singleTask模式的所有特性外缎除,還加強了一點严就,那就是此種模式的Activity只能單獨地位于一個任務(wù)棧中,不同的應(yīng)用去打開這個activity 共享公用的同一個activity器罐。他會運行在自己單獨梢为,獨立的任務(wù)棧里面,并且任務(wù)棧里面只有他一個實例存在轰坊。應(yīng)用場景:呼叫來電界面铸董。這種模式的使用情況比較罕見,在Launcher中可能使用肴沫∷诤Γ或者你確定你需要使Activity只有一個實例。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末颤芬,一起剝皮案震驚了整個濱河市悲幅,隨后出現(xiàn)的幾起案子套鹅,更是在濱河造成了極大的恐慌,老刑警劉巖汰具,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卓鹿,死亡現(xiàn)場離奇詭異,居然都是意外死亡郁副,警方通過查閱死者的電腦和手機减牺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門豌习,熙熙樓的掌柜王于貴愁眉苦臉地迎上來存谎,“玉大人,你說我怎么就攤上這事肥隆〖燃裕” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵栋艳,是天一觀的道長恰聘。 經(jīng)常有香客問我,道長吸占,這世上最難降的妖魔是什么晴叨? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮矾屯,結(jié)果婚禮上兼蕊,老公的妹妹穿的比我還像新娘。我一直安慰自己件蚕,他們只是感情好孙技,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著排作,像睡著了一般牵啦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上妄痪,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天哈雏,我揣著相機與錄音,去河邊找鬼衫生。 笑死裳瘪,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的障簿。 我是一名探鬼主播盹愚,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼站故!你這毒婦竟也來了皆怕?” 一聲冷哼從身側(cè)響起毅舆,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎愈腾,沒想到半個月后憋活,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡虱黄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年悦即,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片橱乱。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡辜梳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出泳叠,到底是詐尸還是另有隱情作瞄,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布危纫,位于F島的核電站宗挥,受9級特大地震影響折欠,放射性物質(zhì)發(fā)生泄漏辜限。R本人自食惡果不足惜阅仔,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一访诱、第九天 我趴在偏房一處隱蔽的房頂上張望昧捷。 院中可真熱鬧潮罪,春花似錦蜂莉、人聲如沸碎罚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至淌山,卻和暖如春裸燎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背泼疑。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工德绿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人退渗。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓移稳,卻偏偏與公主長得像,于是被迫代替她去往敵國和親会油。 傳聞我的和親對象是個殘疾皇子个粱,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

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