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 进lanucher的广播,Android开机优化之调整Launcher的加载时间
前言 如前面两篇文章所描述的, 我们对Android系统的开机时间优化有了一个比较全面的了解,以及一些常用的调试手段(bootchart等),在这篇文章中我们先来看看如下这个问题,首先看一张图: 如上 ...
- 打开服务器网页要5秒,网页优化技巧 如何把网页加载时间控制在1.5秒以内
今天为大家分享"如何把网页加载时间控制在1.5秒以内(必看)"当然了,控制在2秒以内其实是完全可以的,我们为什么要控制页面打开速度那?首先百度会对加载慢的页面进行打击,对SEO排名 ...
- 接手同事vue项目两个月的血和泪,关于vue项目性能优化,缩短首屏加载时间
最近接手了别人做的vue项目,项目跑起来后,有些页面很卡,首屏加载也慢,打包速度也慢.于是,研究了很久vue的项目性能优化,下面我将从两个部分来详解vue项目的性能优化: 代码优化 webpack打包 ...
- Android 浏览器内核浅谈,基于WebKit内核的Android手机浏览器的性能研究与加载优化...
南京邮电大学 硕士 2017 基于WebKit内核的Android手机浏览器的性能研究与加载优化 Performance Research and Load Optimization of Andro ...
- android Q launcher 数据加载流程
时间:2020/08/24 之前公司不允许csdn,笔记写在其它地方.最近整理过来 下一篇:launcher数据加载(二) 前言 androidQ和androidP上Launcher结构有很大区别. ...
- unity优化冷启动时间/加载时间总结
本文一部分博主并未实践过,只是做一个总结,如有错误,请指正 目录 一.概念了解 二.优化目的 1.保证游戏流畅度的基础上DrawCall越小越好 2.Statistics统计面板参数 3.打包编译 三 ...
- 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | RawDexFile.cpp 分析 | dvmRawDexFileOpen函数读取 DEX 文件 )
文章目录 前言 一.RawDexFile.cpp 中 dvmRawDexFileOpen() 方法分析 前言 上一篇博客 [Android 逆向]整体加固脱壳 ( DexClassLoader 加载 ...
- 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | 查找 DexFile 对应的C代码 | dalvik_system_DexFile.cpp 分析 )
文章目录 前言 一.查找 DexFile 对应的 C++ 代码 1.根据 Native 文件命名惯例查找 C++ 代码 2.根据方法名查找 二.dalvik_system_DexFile.cpp 源码 ...
- 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | DexFile loadDexFile 函数 | 构造函数 | openDexFile 函数 )
文章目录 前言 一.DexFile.loadDexFile 函数分析 二.DexFile 构造函数分析 三.DexFile.openDexFile 函数分析 前言 上一篇博客 [Android 逆向] ...
- 【Android 逆向】整体加固脱壳 ( DexClassLoader 加载 dex 流程分析 | DexPathList 中根据 File 加载 DexFile | loadDexFile 分析 )
文章目录 前言 一.根据 File 加载 DexFile 二.DexPathList.loadDexFile 函数分析 前言 上一篇博客 [Android 逆向]整体加固脱壳 ( DexClassLo ...
最新文章
- 0.0 目录-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
- 盘点过去一年,MIT人工智能实验室的那些创新
- 3des java ecb_PHP 3DES加密 与JAVA通用 加密模式:ECB
- ue编辑器拖拽上传图片_Typora + PicGo打造超好用的Markdown编辑器
- Angular如何对包含了HTTP请求的服务类进行单元测试
- Java基础---变量(三)
- 使用Spring将POJO公开为JMX MBean
- Linux Qt打包应用程序--利用linuxdeployqt
- 测试学开发——第一课:java学习路程
- JavaFX 概述 (译)
- linux画图工具的下载,Drawing Linux(简单画图工具)最新版下载
- ubuntu下终于安装好了nvidia的gt540显卡驱动
- 用outlook登录163邮箱的超详细教程
- c语言叠阵题目怎么做,选出下列词语书写全正确的一组[]A、贪婪点辍忍军不禁玲珑剔透B、辜负骚扰擎天旱地多姿多采C、小憩茁壮怡然自得头昏目眩D、玷污糟蹋蜂围叠阵明察秋豪...
- 笨办法学python pdf 第三版_笨办法学python第三版
- Camera 驱动 读取摄像头ID失败问题、低温下Camera打开花屏或者读不到id、概率性读取不到id
- vue中echarts使用案例:饼图(可直接使用)
- CSU 1457 Boggle (字典树+DFS)
- 笔记本电脑WLAN突然没有了(连不上wifi)
- Python pyecharts地理数据可视化 绘制地理图表