欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android开机优化之调整Launcher的加载时间

程序员文章站 2022-04-21 10:21:16
前言如前面两篇文章所描述的,1、Android开机速度优化简单回顾2、优化启动时间我们对Android系统的开机时间优化有了一个比较全面的了解,以及一些常用的调试手段(bootchart等),在这篇文章中我们先来看看如下这个问题,首先看一张图:如上图所示,1、在系统启动的时候,为什么像inputmethod、phone、systemUI及settings这些包加载启动的时候要比Launcher早个2秒多的时间呢?2、开机动画结束,到Launcher加载显示,这里存在一个2秒左...

前言

如前面两篇文章所描述的,

1、Android开机速度优化简单回顾

2、优化启动时间

我们对Android系统的开机时间优化有了一个比较全面的了解,以及一些常用的调试手段(bootchart等),在这篇文章中我们先来看看如下这个问题,首先看一张图:

Android开机优化之调整Launcher的加载时间

如上图所示,

1、在系统启动的时候,为什么像inputmethod、phone、systemUI及settings这些包加载启动的时候要比Launcher早个2秒多的时间呢?

2、开机动画结束,到Launcher加载显示,这里存在一个2秒左右的时间差,这段时间系统在干什么呢?

带着上面的两个问题,我们来进一步分析优化系统的启动时间!

FallbackHome

我们先来看一下系统开机时的log,经过分析过滤,发现在bootanimation结束到启动Activity的时候,有如下两条重要的log

Android开机优化之调整Launcher的加载时间

可以看到在启动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加载启动了

Android开机优化之调整Launcher的加载时间

修改过程

由于我们的产品是不需要锁屏功能的,可以直接把Launcher默认设置为DirectBoot模式,而把inputmethod、phone、settings等这些去掉DirectBoot模式,从而让Launcher优先加载启动。

1、去掉inputmethod、phone、settings的directBootAware属性

Android开机优化之调整Launcher的加载时间

Android开机优化之调整Launcher的加载时间

Android开机优化之调整Launcher的加载时间

2、给Launcher增加directBootAware属性

Android开机优化之调整Launcher的加载时间

异常问题处理

编译系统,更新system之后,系统启动,出现Launcher stopped的异常,

Android开机优化之调整Launcher的加载时间

抓取logcat日志,有如下crash

Android开机优化之调整Launcher的加载时间

出现的错误提示:

User 0 must be unlocked for widgets to be available

出现这个错误的原因,可以参考这篇文章:https://blog.csdn.net/w1070216393/article/details/72722759

但这里改动的是Launcher,除了这个问题,还会有像加载QS出现异常等,这里就不多说了,一一解决就好了。

最后看一下优化后的bootchart

Android开机优化之调整Launcher的加载时间

本文地址:https://blog.csdn.net/xl19862005/article/details/108597195

相关标签: android