android 冷啟動(dòng)和熱啟動(dòng)

一砰碴、什么是冷啟動(dòng)、熱啟動(dòng)芳室?

冷啟動(dòng):
在啟動(dòng)應(yīng)用時(shí)专肪,系統(tǒng)中沒(méi)有該應(yīng)用的進(jìn)程,這時(shí)系統(tǒng)會(huì)創(chuàng)建一個(gè)新的進(jìn)程分配給該應(yīng)用堪侯;

熱啟動(dòng):
在啟動(dòng)應(yīng)用時(shí)嚎尤,系統(tǒng)中已有該應(yīng)用的進(jìn)程(例:按back鍵、home鍵伍宦,應(yīng)用雖然會(huì)退出诺苹,但是該應(yīng)用的進(jìn)程還是保留在后臺(tái));

二雹拄、冷啟動(dòng)收奔、熱啟動(dòng)的區(qū)別

冷啟動(dòng):系統(tǒng)沒(méi)有該應(yīng)用的進(jìn)程,需要?jiǎng)?chuàng)建一個(gè)新的進(jìn)程分配給應(yīng)用滓玖,所以會(huì)先創(chuàng)建和初始化Application類(lèi)坪哄,再創(chuàng)建和初始化MainActivity類(lèi)(包括一系列的測(cè)量、布局势篡、繪制)翩肌,最后顯示在界面上。 熱啟動(dòng): 從已有的進(jìn)程中來(lái)啟動(dòng)禁悠,不會(huì)創(chuàng)建和初始化Application類(lèi)念祭,直接創(chuàng)建和初始化MainActivity類(lèi)(包括一系列的測(cè)量、布局碍侦、繪制)粱坤,最后顯示在界面上隶糕。

三、冷啟動(dòng)時(shí)間的計(jì)算

API19 之后站玄,系統(tǒng)會(huì)出打印日志輸出啟動(dòng)的時(shí)間枚驻; 冷啟動(dòng)時(shí)間 = 應(yīng)用啟動(dòng)(創(chuàng)建進(jìn)程) —> 完成視圖的第一次繪制(Activity內(nèi)容對(duì)用戶可見(jiàn));

四株旷、冷啟動(dòng)流程

Zygote進(jìn)程中fork創(chuàng)建出一個(gè)新的進(jìn)程再登; 創(chuàng)建和初始化Application類(lèi)、創(chuàng)建MainActivity晾剖; inflate布局锉矢、當(dāng)onCreate/onStart/onResume方法都走完; contentView的measure/layout/draw顯示在界面上齿尽;

總結(jié):
Application構(gòu)造方法 –> attachBaseContext() –> onCreate() –> Activity構(gòu)造方法 –> onCreate() –> 配置主題中背景等屬性 –> onStart() –> onResume() –> 測(cè)量布局繪制顯示在界面上沽损。

五、冷啟動(dòng)的優(yōu)化

減少在Application和第一個(gè)Activity的onCreate()方法的工作量雕什; 不要讓Application參與業(yè)務(wù)的操作缠俺; 不要在Application進(jìn)行耗時(shí)操作显晶; 不要以靜態(tài)變量的方式在Application中保存數(shù)據(jù)贷岸; 減少布局的復(fù)雜性和深度;

1. 冷啟動(dòng)的定義

  • 冷啟動(dòng):?jiǎn)?dòng)應(yīng)用前磷雇,系統(tǒng)中沒(méi)有該應(yīng)用的任何進(jìn)程信息Application等偿警,啟動(dòng)5s+。
1.1 冷啟動(dòng)時(shí)間的計(jì)算

這個(gè)時(shí)間值是從應(yīng)用啟動(dòng)(創(chuàng)建進(jìn)程)開(kāi)始計(jì)算唯笙,到完成視圖的第一次繪制(即Activity內(nèi)容對(duì)用戶可見(jiàn))為止螟蒸。

2. 熱啟動(dòng)的定義

  • 熱啟動(dòng):?jiǎn)?dòng)應(yīng)用時(shí),后臺(tái)已有該應(yīng)用的進(jìn)程崩掘,內(nèi)存中有應(yīng)用相關(guān)Activity(home鍵退到桌面)七嫌,啟動(dòng)1.5s+。

3. 溫啟動(dòng)的定義

有一些文章有溫啟動(dòng)這個(gè)啟動(dòng)類(lèi)型苞慢。

  • 溫啟動(dòng):?jiǎn)?dòng)應(yīng)用時(shí)诵原,后臺(tái)已有該應(yīng)用的進(jìn)程,內(nèi)存中沒(méi)有應(yīng)用相關(guān)Activity(back鍵退出應(yīng)用挽放,未清除進(jìn)程)绍赛,啟動(dòng)2s+。

冷熱啟動(dòng)過(guò)程中辑畦,會(huì)執(zhí)行的步驟不一樣吗蚌。

  • 冷啟動(dòng):系統(tǒng)會(huì)重新創(chuàng)建一個(gè)新的進(jìn)程分配給它,所以會(huì)先創(chuàng)建和初始化Application類(lèi)纯出,再創(chuàng)建和初始化MainActivity類(lèi)(包括一系列的測(cè)量蚯妇、布局敷燎、繪制),最后顯示在界面上侮措。
  • 熱啟動(dòng):一個(gè)應(yīng)用從新進(jìn)程的創(chuàng)建到進(jìn)程的銷(xiāo)毀懈叹,Application只會(huì)初始化一次,所以不必創(chuàng)建和初始化Application分扎,直接走M(jìn)ainActivity(包括一系列的測(cè)量澄成、布局、繪制)畏吓。

二.冷啟動(dòng)流程

當(dāng)點(diǎn)擊app的啟動(dòng)圖標(biāo)時(shí)墨状,安卓系統(tǒng)會(huì)從Zygote進(jìn)程中fork創(chuàng)建出一個(gè)新的進(jìn)程分配給該應(yīng)用,之后會(huì)依次創(chuàng)建和初始化Application類(lèi)菲饼、創(chuàng)建MainActivity類(lèi)肾砂、加載主題樣式Theme中的windowBackground等屬性設(shè)置給MainActivity以及配置Activity層級(jí)上的一些屬性、再inflate布局宏悦、當(dāng)onCreate/onStart/onResume方法都走完了后最后才進(jìn)行contentView的measure/layout/draw顯示在界面上镐确,所以直到這里,應(yīng)用的第一次啟動(dòng)才算完成饼煞,這時(shí)候我們看到的界面也就是所說(shuō)的第一幀源葫。詳細(xì)的參考:App(Activity)啟動(dòng)流程
總結(jié)應(yīng)用的啟動(dòng)流程如下:
Application的構(gòu)造器方 -> attachBaseContext() -> onCreate() -> Activity的構(gòu)造方法 -> onCreate() -> 配置主題中背景等屬性 -> onStart() -> onResume() -> 測(cè)量布局繪制顯示在界面上。

三.如何對(duì)冷啟動(dòng)的時(shí)間進(jìn)行優(yōu)化

冷啟動(dòng)時(shí)砖瞧,加載Application過(guò)程中息堂,可能會(huì)消耗很多時(shí)間。如果不采取任何措施就會(huì)產(chǎn)生長(zhǎng)時(shí)間的白屏或黑屏效果块促,讓用戶以為這個(gè)應(yīng)用很卡荣堰。消除啟動(dòng)時(shí)的白屏/黑屏,請(qǐng)參考:Android冷啟動(dòng)實(shí)現(xiàn)APP秒開(kāi)

1竭翠、什么是Android的冷啟動(dòng)時(shí)間振坚?
冷啟動(dòng)時(shí)間是指用戶從手機(jī)桌面點(diǎn)擊APP的那一刻起到啟動(dòng)頁(yè)面的Activity調(diào)用onCreate()方法之間的這個(gè)時(shí)間段。
2斋扰、在冷啟動(dòng)的時(shí)間段內(nèi)發(fā)生了什么渡八?
首先我們要知道當(dāng)打開(kāi)一個(gè)Activity的時(shí)候發(fā)生了什么,在一個(gè)Activity打開(kāi)時(shí)褥实,如果該Activity所屬的Application還沒(méi)有啟動(dòng)呀狼,那么系統(tǒng)會(huì)為這個(gè)Activity創(chuàng)建一個(gè)進(jìn)程(每創(chuàng)建一個(gè)進(jìn)程都會(huì)調(diào)用一次Application,所以Application的onCreate()方法可能會(huì)被調(diào)用多次)损离,在進(jìn)程的創(chuàng)建和初始化中哥艇,勢(shì)必會(huì)消耗一些時(shí)間,在這個(gè)時(shí)間里僻澎,WindowManager會(huì)先加載APP里的主題樣式里的窗口背景(windowBackground)作為預(yù)覽元素貌踏,然后才去真正的加載布局十饥,如果這個(gè)時(shí)間過(guò)長(zhǎng),而默認(rèn)的背景又是黑色或者白色祖乳,這樣會(huì)給用戶造成一種錯(cuò)覺(jué)逗堵,這個(gè)APP很卡,很不流暢眷昆,自然也影響了用戶體驗(yàn)蜒秤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市亚斋,隨后出現(xiàn)的幾起案子作媚,更是在濱河造成了極大的恐慌,老刑警劉巖帅刊,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纸泡,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡赖瞒,警方通過(guò)查閱死者的電腦和手機(jī)女揭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)栏饮,“玉大人吧兔,你說(shuō)我怎么就攤上這事÷盏” “怎么了掩驱?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵芒划,是天一觀的道長(zhǎng)冬竟。 經(jīng)常有香客問(wèn)我,道長(zhǎng)民逼,這世上最難降的妖魔是什么泵殴? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮拼苍,結(jié)果婚禮上笑诅,老公的妹妹穿的比我還像新娘。我一直安慰自己疮鲫,他們只是感情好吆你,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著俊犯,像睡著了一般妇多。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上燕侠,一...
    開(kāi)封第一講書(shū)人閱讀 51,488評(píng)論 1 302
  • 那天者祖,我揣著相機(jī)與錄音立莉,去河邊找鬼。 笑死七问,一個(gè)胖子當(dāng)著我的面吹牛蜓耻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播械巡,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼刹淌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了讥耗?” 一聲冷哼從身側(cè)響起芦鳍,我...
    開(kāi)封第一講書(shū)人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎葛账,沒(méi)想到半個(gè)月后柠衅,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡籍琳,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年菲宴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片趋急。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡喝峦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出呜达,到底是詐尸還是另有隱情谣蠢,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布查近,位于F島的核電站眉踱,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏霜威。R本人自食惡果不足惜谈喳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望戈泼。 院中可真熱鬧婿禽,春花似錦、人聲如沸大猛。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)挽绩。三九已至膛壹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間琼牧,已是汗流浹背恢筝。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工哀卫, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人撬槽。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓此改,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親侄柔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子共啃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

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