android5开机动画耗时,Android 开机速度优化
開機速度經常被用來做為競品比較的一個參數,開機快容易給用戶一種機器運行較快的錯覺。以致于MTK開發出快速開機的功能,是一個假關機的功能,SystemServer并沒有掛掉,從而達到快速開機的功能(大概可在5秒內開機)。但其還是存在耗電的。
本文著力于Android上開機速度的優化。
從開機的流程上來耗時較長的有以下幾點:
==preload classes和resource==
所有的Android應用程序都是從Zygote進程fork出來的,所以為了共享一些class和resourse資源,Zygote進程初始化過程中,會預先加載一些常用的java class和資源文件到進程的內存中,這樣其他應用fork出來后就不用再次加載了,從而提高了應用的啟動速度。
這個過程是可以精簡和優化的,你可以減少一些classes和resource的加載,也可以啟用多線程來進行加載,從而加快系統的啟動速度。
本過程涉及到的文件
/system/etc/preloaded-classes
frameworks/base/core/res/res/values/arrays.xml
==PMS 加載application==
在systemServer中會先啟動PMS,然后讓其加載應用,默認會去搜索system/app/,system/priv-app/,等,會讀取它的AndroidManifest.xml,獲取信息,還會判斷其是否有odex優化,如果沒優化,會對其進行優化。
這個過程也是非常耗時的,預裝的apk文件越少,系統啟動速度也就越快,因此,精簡預裝apk也是優化系統啟動速度最重要的手段之一。要想減少預裝的apk文件,則需要分析系統的build文件,將不需要的apk編譯選項刪除掉
==啟動相關service==
Android OS的啟動本質上就是啟動一系列的本地服務和Java服務,Android系統的所有功能都是通過這些服務間接提供的。
這些服務有很多并不是必須啟動的,根據業務需求可以去掉一些,本過程涉及到的文件:
system/core/rootdir/init.rc
frameworks/base/services/java/com/android/server/SystemServer.java
==Bootanimation 消失==
在所有的service都起來了之后,會通知surfaceflinger去關掉bootanimation.在通知之前會判斷其是否要顯示壁紙,鎖屏,要等這些需要顯示的應用都準備好了之后才會通知surfaceflinger關掉bootanimation.所以可以通過先把需要顯示的應用所涉及的service先進行啟動,如需要等待壁紙,則可先將wallpaperService進行systemRunning()。
在SurfaceFlinger去關掉bootanimation時,可以觀察其是否立即停止。在HiCam的項目中,就發現在通知停止之后會等待280ms左右才消失,最后發現是在停止是會等待動畫的2幀的時間才去停止動畫。
PS: 優化啟動動畫,降低幀率和圖片尺寸,也可以達到優化開機速度的效果。
總結
以上是生活随笔為你收集整理的android5开机动画耗时,Android 开机速度优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端大屏模板分享-可在线浏览
- 下一篇: android9.0官方壁纸,Andro