前言

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

我们对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

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

最后看一下优化后的bootchart

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

android 进lanucher的广播,Android开机优化之调整Launcher的加载时间相关推荐

  1. 打开服务器网页要5秒,网页优化技巧 如何把网页加载时间控制在1.5秒以内

    今天为大家分享"如何把网页加载时间控制在1.5秒以内(必看)"当然了,控制在2秒以内其实是完全可以的,我们为什么要控制页面打开速度那?首先百度会对加载慢的页面进行打击,对SEO排名 ...

  2. android 进lanucher的广播,(转)Android中Launcher对于AppWidget处理的分析:AppWidgetHost角色...

    图二的时序图描述了,从AppWidgetPickActivity返回之后,Launcher如何处理AppWidget的. 图二.Picked之后Launcher对AppWidget的处理 执行过程: ...

  3. 接手同事vue项目两个月的血和泪,关于vue项目性能优化,缩短首屏加载时间

    最近接手了别人做的vue项目,项目跑起来后,有些页面很卡,首屏加载也慢,打包速度也慢.于是,研究了很久vue的项目性能优化,下面我将从两个部分来详解vue项目的性能优化: 代码优化 webpack打包 ...

  4. android系统休眠发广播,Android - BroadcastReceiver

    BroadcastReceiver BroadcastReceiver,广播接收者,用来接收系统和应用的广播,并做出相应的处理,如电量过低时提示用户充电等: BroadcastReceiver 是 A ...

  5. android测量网页加载时间

    如果被测浏览器用的是webkit内核,或者是自己写的程序,总之就是如果可以获取对应的webview对象:可以通过重写webviewclient来获取加载时间.webviewclient中的onPage ...

  6. android Q launcher 数据加载流程

    时间:2020/08/24 之前公司不允许csdn,笔记写在其它地方.最近整理过来 下一篇:launcher数据加载(二) 前言 androidQ和androidP上Launcher结构有很大区别. ...

  7. unity优化冷启动时间/加载时间总结

    本文一部分博主并未实践过,只是做一个总结,如有错误,请指正 目录 一.概念了解 二.优化目的 1.保证游戏流畅度的基础上DrawCall越小越好 2.Statistics统计面板参数 3.打包编译 三 ...

  8. python 按需加载_基于python的opcode优化和模块按需加载机制研究(学习与个人思路)(原创)...

    基于python的opcode优化和模块按需加载机制研究(学习与思考) 姓名:XXX 学校信息:XXX 主用编程语言:python3.5 文档转换为PDF有些图片无法完全显示,请移步我的博客查看 完成 ...

  9. 优化JS加载时间过长的一种思路

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 去年公司在漳州的一个项目中,现场工程人员反映地图部分出图有点 ...

最新文章

  1. PL/SQL Developer连接本地Oracle 11g 64位数据库和快捷键设置
  2. android studio 优化完以后开不了虚拟机,Android studio 打不开官方虚拟机 100%成功解决方法...
  3. 0元包邮 | 知识图谱学习导图
  4. MySQL数据库事务隔离性的实现
  5. [Leetcode] single number ii 找单个数
  6. Spark共享变量(广播变量、累加器)
  7. FGSM论文阅读笔记
  8. php零售,ThinkPHP开源新零售小程序_萤火商城系统
  9. MICRO USB引脚定义以及接法
  10. ant design vue折叠面板自定义header
  11. 关注Oracle 02 财务系统的选型想说简单不容易
  12. top n with ties
  13. Android系统版本(截止2022年2月)
  14. Python 之 Matplotlib xticks 的再次说明、图形样式和子图
  15. 深入理解卷积网络的卷积
  16. 【数字化】数字化工厂的框架与落地实践;50张图解读数字化制造
  17. CCF论文列表(2022拟定)大更新!NAACL升B!ICLR继续陪跑...MICCAI空降B!PRCV空降C!
  18. 【笔记】lua - 协程
  19. 如何服务器登录 MySQL
  20. 风浪模拟数据准备步骤(MOW/SWAN):如何从ECMWF-EAR下载数据

热门文章

  1. c语言谭浩强第五版---全书笔记+习题(一)
  2. 火山坑随笔20180920_不能使用模拟器调试的问题
  3. 看文档学redis以及面试题2(配套发出有docker以及linux两个不同的皆可学习)
  4. MySql高级-02:优化步骤以及优化方法【重点】
  5. 跨域 -- cors
  6. 卡爾·史瓦西-那个解出黑洞的人
  7. python绿色参数_色差估计在python
  8. 自动根据当前日期生成流水号!自取!!!
  9. 哨兵-2 Sentinel-2 数据下载(欧空局)
  10. 28岁终于在政考网考上了公务员,自述经历