android 进lanucher的广播,Android开机优化之调整Launcher的加载时间
前言
如前面两篇文章所描述的,
我们对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的加载时间相关推荐
- 打开服务器网页要5秒,网页优化技巧 如何把网页加载时间控制在1.5秒以内
今天为大家分享"如何把网页加载时间控制在1.5秒以内(必看)"当然了,控制在2秒以内其实是完全可以的,我们为什么要控制页面打开速度那?首先百度会对加载慢的页面进行打击,对SEO排名 ...
- android 进lanucher的广播,(转)Android中Launcher对于AppWidget处理的分析:AppWidgetHost角色...
图二的时序图描述了,从AppWidgetPickActivity返回之后,Launcher如何处理AppWidget的. 图二.Picked之后Launcher对AppWidget的处理 执行过程: ...
- 接手同事vue项目两个月的血和泪,关于vue项目性能优化,缩短首屏加载时间
最近接手了别人做的vue项目,项目跑起来后,有些页面很卡,首屏加载也慢,打包速度也慢.于是,研究了很久vue的项目性能优化,下面我将从两个部分来详解vue项目的性能优化: 代码优化 webpack打包 ...
- android系统休眠发广播,Android - BroadcastReceiver
BroadcastReceiver BroadcastReceiver,广播接收者,用来接收系统和应用的广播,并做出相应的处理,如电量过低时提示用户充电等: BroadcastReceiver 是 A ...
- android测量网页加载时间
如果被测浏览器用的是webkit内核,或者是自己写的程序,总之就是如果可以获取对应的webview对象:可以通过重写webviewclient来获取加载时间.webviewclient中的onPage ...
- android Q launcher 数据加载流程
时间:2020/08/24 之前公司不允许csdn,笔记写在其它地方.最近整理过来 下一篇:launcher数据加载(二) 前言 androidQ和androidP上Launcher结构有很大区别. ...
- unity优化冷启动时间/加载时间总结
本文一部分博主并未实践过,只是做一个总结,如有错误,请指正 目录 一.概念了解 二.优化目的 1.保证游戏流畅度的基础上DrawCall越小越好 2.Statistics统计面板参数 3.打包编译 三 ...
- python 按需加载_基于python的opcode优化和模块按需加载机制研究(学习与个人思路)(原创)...
基于python的opcode优化和模块按需加载机制研究(学习与思考) 姓名:XXX 学校信息:XXX 主用编程语言:python3.5 文档转换为PDF有些图片无法完全显示,请移步我的博客查看 完成 ...
- 优化JS加载时间过长的一种思路
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 去年公司在漳州的一个项目中,现场工程人员反映地图部分出图有点 ...
最新文章
- PL/SQL Developer连接本地Oracle 11g 64位数据库和快捷键设置
- android studio 优化完以后开不了虚拟机,Android studio 打不开官方虚拟机 100%成功解决方法...
- 0元包邮 | 知识图谱学习导图
- MySQL数据库事务隔离性的实现
- [Leetcode] single number ii 找单个数
- Spark共享变量(广播变量、累加器)
- FGSM论文阅读笔记
- php零售,ThinkPHP开源新零售小程序_萤火商城系统
- MICRO USB引脚定义以及接法
- ant design vue折叠面板自定义header
- 关注Oracle 02 财务系统的选型想说简单不容易
- top n with ties
- Android系统版本(截止2022年2月)
- Python 之 Matplotlib xticks 的再次说明、图形样式和子图
- 深入理解卷积网络的卷积
- 【数字化】数字化工厂的框架与落地实践;50张图解读数字化制造
- CCF论文列表(2022拟定)大更新!NAACL升B!ICLR继续陪跑...MICCAI空降B!PRCV空降C!
- 【笔记】lua - 协程
- 如何服务器登录 MySQL
- 风浪模拟数据准备步骤(MOW/SWAN):如何从ECMWF-EAR下载数据