Android冷啟動和熱啟動

一、什么是冷啟動、熱啟動?

  • 冷啟動:
    在啟動應(yīng)用時,系統(tǒng)中沒有該應(yīng)用的進(jìn)程,這時系統(tǒng)會創(chuàng)建一個新的進(jìn)程分配給該應(yīng)用;

  • 熱啟動:
    在啟動應(yīng)用時,系統(tǒng)中已有該應(yīng)用的進(jìn)程(例:按back鍵、home鍵,應(yīng)用雖然會退出,但是該應(yīng)用的進(jìn)程還是保留在后臺);

二、冷啟動、熱啟動的區(qū)別

  • 冷啟動:系統(tǒng)沒有該應(yīng)用的進(jìn)程,需要創(chuàng)建一個新的進(jìn)程分配給應(yīng)用,所以會先創(chuàng)建和初始化Application類,再創(chuàng)建和初始化MainActivity類(包括一系列的測量、布局、繪制),最后顯示在界面上。
  • 熱啟動: 從已有的進(jìn)程中來啟動,不會創(chuàng)建和初始化Application類,直接創(chuàng)建和初始化MainActivity類(包括一系列的測量、布局、繪制),最后顯示在界面上。

三、冷啟動時間的計算

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

四、冷啟動流程

Zygote進(jìn)程中fork創(chuàng)建出一個新的進(jìn)程;
創(chuàng)建和初始化Application類、創(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() –> 測量布局繪制顯示在界面上。

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

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


原文:https://blog.csdn.net/lingguiqin/article/details/79382240

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 最近一直想整理一個關(guān)于Android熱啟動,冷啟動的文章,于是就有了下文(本文僅僅只是整理總結(jié)前人的知識點)來源:...
    忘塵And閱讀 3,117評論 0 7
  • 請保持淡定,分析代碼,記?。盒阅芎苤匾?。 啟動時間優(yōu)化 毫無疑問,應(yīng)用的啟動速度越快越好。 本文可以幫助你優(yōu)化應(yīng)用...
    Mupceet閱讀 11,955評論 5 19
  • 【觸發(fā)背景】面對海量APP的今天,APP用戶量和活躍度成為評價一款A(yù)PP是否成功的重要因素。用戶下載APP后,AP...
    siyu8023閱讀 10,631評論 1 14
  • 前言: 以下文字,純屬個人觀點,不喜勿噴。 想了好久,關(guān)于日本的文章怎么寫,可能因為不了解的原因吧,所以以至于想了...
    陶葉櫻梓047曉春閱讀 1,036評論 2 2
  • 人生在世 沒有無緣無故的遇見 也沒有無緣無故的緣分 今生你我相逢 也許注定是一場 無法言破的命運和契機(jī) 如同花開花...
    可以發(fā)斯蒂芬閱讀 505評論 0 0

友情鏈接更多精彩內(nèi)容