安卓系統裏啓動過程和應用進程

在Android裏,進程和程序是兩回事,程序可以一直保留在系統裏,但是沒有任何進程在後臺運行,也不消耗任何系統資源。所有的程序保留在內存中,這樣可以更快的啓動回到它之前的狀態。當你的內存用完了,系統會自動幫你殺掉不用的應用或任務。

每一個Android應用都是以一個進程的方式運行的,其生命週期不是有自身控制,而是由系統根據運行的應用的一些特徵來決定。
  Android在進程活動停止後,仍然把這些進程都保留在內存中;這些保留在內存中的進程通常情況下不會影響整體系統的運行速度,當用戶再次激活這些進程時,可以快速的啓動。
  所以,與Windows、Symbian不同,在Android裏,RAM被用滿了不是壞事,它意味着可以快速打開之前打開的軟件。Android系統不需要經常糾結進程,也不用安裝使用進程管理軟件,因爲進程管理軟件本身也消耗了系統資源。

  獨立虛擬機
  Android是以Linux爲核心的平臺,使用Java作爲編程語言。Android上的應用都是java程序(也可以加入C++編寫的.so庫),這就需要虛擬機,而Android上的應用是帶有獨立虛擬機的,也就是每開一個應用就會打開一個獨立的虛擬機。這樣設計的原因是可以避免虛擬機崩潰導致整個系統崩潰,但代價就是需要更多內存。
  Android裏每個進程都是基於虛擬機的,並且也要加載基本的庫,實際上這些都是共享,所以Android啓動一個新的程序實際上並不消耗很多的內存和CPU資源。

  安裝時進行優化dex文件
  APK是AndroidPackage的縮寫,即Android安裝包,apk是類似Symbian Sis或Sisx的文件格式。將APK文件直接傳到Android模擬器或Android手機中執行即可安裝。Android的應用程序都打包成一個apk文件,其實是zip格式,但後綴名被修改爲apk。
  apk文件通過UnZip解壓後,可以看到Dex文件,Dex是Dalvik VM executes的全稱,即Android Dalvik執行程序。Dalvik是Google公司設計專用於Android平臺的Java虛擬機。
  系統第一次啓動或應用程序第一次安裝時,就把apk文件解壓了,把可執行文件dex優化成odex文件並放在/data/dalvik-cache目錄下。優化後的dex文件啓動速度會加快。這就解釋了爲什麼Android系統第一次啓動是比較慢,以後起來很快了。

  Android系統在開機流程
  —啓動BootLoader(初始化硬件設備和建立內存空間映射圖)
  —加載系統內核kernel
  —啓動Init進程
  —啓動zygote後臺進程(Dalvik虛擬機初始化和庫的加載)
  —啓動系統服務system_server
  —啓動桌面launcher

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章