1. 程式人生 > >Android知識體系總結之Android部分之冷啟動&熱啟動篇

Android知識體系總結之Android部分之冷啟動&熱啟動篇

Android知識體系總結之Android部分之冷啟動&熱啟動篇

在這裡插入圖片描述

1.冷啟動&熱啟動

1.1 什麼是冷啟動?

  當啟動應用時,後臺沒有該應用的程序,這時系統會重新建立一個新的程序分配給該應用,這個啟動方式就是冷啟動。它的特點就是冷啟動因為系統會重新建立一個新的程序分配給它,所以會先建立和初始化Application類,再建立和初始化MainActivity類(包括一系列的測量、佈局、繪製),最後顯示在介面上。

1.2 什麼是熱啟動?

  當啟動應用時,後臺已有該應用的程序(例:按back鍵、home鍵,應用雖然會退出,但是該應用的程序是依然會保留在後臺,可進入任務列表檢視),所以在已有程序的情況下,這種啟動會從已有的程序中來啟動應用,這個方式叫熱啟動。它的特點就是熱啟動因為會從已有的程序中來啟動,所以熱啟動就不會走Application這步了,而是直接走MainActivity(包括一系列的測量、佈局、繪製),所以熱啟動的過程只需要建立和初始化一個MainActivity就行了,而不必建立和初始化Application,因為一個應用從新程序的建立到程序的銷燬,Application只會初始化一次。

2.冷啟動優化方案

2.1 冷啟動的流程&優化方案

關於冷啟動的時間值問題::從應用啟動(建立程序)開始計算,到完成檢視的第一次繪製(即Activiy內容對使用者可見)為止。Zygote程序中fork創建出一個新的程序,然後建立和初始化Application類,建立MainActivity類,inflate佈局,當onCreate/onStart/onResum方法都走完,contentView的measure/layout/draw顯示在介面上。因此冷啟動的流程就是:

冷啟動的流程:Application構造器–>attachBaseContext()–>OnCreate()–>Activity構造器–>onCreate–>配置主題背景等屬性–>onStart()–>onResume–>測量佈局繪製顯示在介面上。

冷啟動的優化方案如下:

  • a.減少onCreate方法的工作量。
  • b.不要讓Application參與業務邏輯。
  • c.不要在Application中做耗時操作。
  • d.不要以靜態變數方式在Application中儲存資料。
  • e.佈局優化/mainThread儘量延遲初始化

2.2 案例演示之Android App啟動的時候黑白屏問題&解決方案