Android开机优化之调整Launcher的加载时间
前言
如前面兩篇文章所描述的,
1、Android開機速度優化簡單回顧
2、優化啟動時間
我們對Android系統的開機時間優化有了一個比較全面的了解,以及一些常用的調試手段(bootchart等),在這篇文章中我們先來看看如下這個問題,首先看一張圖:
如上圖所示,
1、在系統啟動的時候,為什么像inputmethod、phone、systemUI及settings這些包加載啟動的時候要比Launcher早個2秒多的時間呢?
2、開機動畫結束,到Launcher加載顯示,這里存在一個2秒左右的時間差,這段時間系統在干什么呢?
帶著上面的兩個問題,我們來進一步分析優化系統的啟動時間!
FallbackHome
我們先來看一下系統開機時的log,經過分析過濾,發現在bootanimation結束到啟動Activity的時候,有如下兩條重要的log
可以看到在啟動Launcher前,系統先去啟動了一個叫FallbackHome的Activity,兩者的時間差正好是2秒左右!!
那么什么是FallbackHome呢?經過一番google,找到了如下這段比較靠普,說的比較明白的解釋:
FallbackHome是原生setting的一個activity,且配置了DirectBoot mode。launcher啟動的時候會先啟動到這個界面,用戶解鎖后,才會調用finish,結束該界面,從而進入到真正的launcher界面。 若未解鎖就等待ACTION_USER_UNLOCKED廣播后再去啟動Launcher。非DirectBoot模式下的launcher耗時4s就是在等待finishBooting后的系統廣播ACTION_USER_UNLOCKED。 FallbackHome就是應DirectBoot功能而新增的一個頁面,具體DirectBoot功能不在這里贅述,大家可自行了解。作者:迷你球 鏈接:https://juejin.im/post/6844904079001387016 來源:掘金 著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。關于什么是DirectBoot模式,這里不再進行說明,具體內容可以閱讀google官方的文檔:
支持“直接啟動”模式
在setting的AndroidManifest.xml里面,配置了DirectBoot模式,這樣FallbackHome就會先于Launcher加載啟動了
修改過程
由于我們的產品是不需要鎖屏功能的,可以直接把Launcher默認設置為DirectBoot模式,而把inputmethod、phone、settings等這些去掉DirectBoot模式,從而讓Launcher優先加載啟動。
1、去掉inputmethod、phone、settings的directBootAware屬性
2、給Launcher增加directBootAware屬性
異常問題處理
編譯系統,更新system之后,系統啟動,出現Launcher stopped的異常,
抓取logcat日志,有如下crash
出現的錯誤提示:
User 0 must be unlocked for widgets to be available出現這個錯誤的原因,可以參考這篇文章:https://blog.csdn.net/w1070216393/article/details/72722759
但這里改動的是Launcher,除了這個問題,還會有像加載QS出現異常等,這里就不多說了,一一解決就好了。
最后看一下優化后的bootchart
總結
以上是生活随笔為你收集整理的Android开机优化之调整Launcher的加载时间的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 键盘自动收起来了,And
- 下一篇: centOS和宝塔linux面板详细使用