APP启动优化与黑白屏
一、APP启动
冷启动
系统不存在APP进程时,启动APP。如:首次通过桌面图标启动。
冷启动主要包含以下几步:
(1) 点击屏幕图标,launcher进程会通过binder 请求system_server进程,告诉AMS启动APP,AMS去PMS中查询APP的相关信息。
(2) 找到APP信息后,通过socket 的方式告诉zygote进程,启动APP进程。
(3) zygote进程fork出APP进程。
(4) APP进程会通过binder 调用AMS的attachApplication,AMS再通过binder 调用APP进程中Application的onCreate方法。
(5) 执行完毕Application的onCreate方法后,AMS继续通过一系列处理,最后通过binder 触发APP进程中Activity的生命周期:onCreate、onStart、onResume。
详细流程可以看AMS-Activity启动流程
热启动
APP成功展示,被切换到后台,再次启动APP。如:点击home键后,再展示APP。
温启动
APP退出但是进程仍然存在,重新启动APP。如:连续点击back键退出app,再马上启动app。
二、启动优化
可优化的节点
通过APP冷启动的流程,可以看到1、2、3步骤都是系统进行的操作,很难进行优化;而4、5两步,分别执行Application的onCreate和Activity的onCreate、onStart,应尽量避免耗时操作。
工具
1、通过adb命令
adb shell am start -W 包名/入口Activity(示例:adb shell am start -W com.niiiico.wgdemo/com.niiiico.wgdemo.MainActivity)
LaunchState: 启动方式
TotalTime: 新应用的启动耗时
WaitTime: 前一个应用的onPause + 新应用的启动耗时
2、通过profile
(1)点击app->Edit Configurations
(2)Edit Configurations设置
如图所示:
<1>选择app
<2>选择Profiling
<3>选中Start this recofing on startup
<4>勾选CPU activity
<5>选择Sample Java Methods
<6>点击OK第<5>步中,各个选项的意义;
Sample Java Methods:对java方法采样跟踪
Trace Java Methods:对java方法全量跟踪
Sample C/C++ Functions:对 C/C++ 函数采样跟踪
Trace System Calls:对系统调用进行跟踪
(3)点击run->profile->app,启动app。
(4)待app完全展示后,点击stop停止跟踪。
(5)分析面板
(6)点击线程进行切换;如:点击main线程,在右侧就会展示出详细信息。
(7)详细分析
通过切换tab,切换展示方式,进行详细分析。可以看出,统计时长16s,main线程中执行耗时6s,其中在Application的onCreate中,由于调用了sleep()函数耗时5s。
优化思路
通过以上方法,可以得到APP的启动时间,也可以找到耗时代码。通常为了避免影响启动速度,可以有以下思路。
1、onCreate中少写耗时代码,如:懒加载等,将一些不必要代码延后加载。
2、优化xml布局,避免过度绘制,节省UI的绘制时间。
3、优化代码,减少执行时间。
4、通过产品层面进行修改,如:过渡页面、广告页等。
三、黑白屏
原因
通过上文可知,启动APP是有耗时的,会感觉到点击 APP图标时会有 “延迟” 现象。为了解决这一问题,Google 在 APP创建的过程中,先展示一个空白页面,用户体会到点击图标之后立马就有响应。
这个空白页面的颜色是根据我们在 AndroiMainfest 文件中配置的主题背景颜色来决定的,现在一般默认是白色。
解决思路
1、取消空白预览,把锅甩给系统,
APP启动优化与黑白屏相关推荐
- App启动优化-一顿操作猛如虎
前言 ++一个应用App的启动速度能够影响用户的首次体验,用户希望应用能够及时响应并快速加载.启动时间过长的应用不能满足这个期望,并且可能会令用户失望.这种糟糕的体验可能会导致用户在应用商店针对您的应 ...
- App性能优化(布局优化,线程优化,app瘦身优化,页面切换优化,App启动优化,内存优化)
Android APP性能优化(最新总结) 在目前Android开发中,UI布局可以说是每个App使用频率很高的,随着UI越来越多,布局的重复性.复杂度也随之增长,这样使得UI布局的优化,显得至关重要 ...
- [纸上谈兵 1]——App启动优化
0 纸上谈兵--App启动优化 纸上谈兵系列是我在学习App性能优化的笔记,纸上谈兵这个名字就很好的反应了这次只是启动优化的学习,并没有真正用到实际App的开发过程中(以后专门的同时处理),闲话少说, ...
- android 7.0 黑屏,Android app启动是出现白屏或者黑屏如何解决?
1.为什么 APP 启动时会出现白屏或者黑屏? 当打开一个 Activity 时,如果这个 Activity 所属的应用还没有在运行,系统会为这个 Activity 所属的应用创建一个进程,但进程的创 ...
- Android 系统性能优化(72)-----App启动优化
App启动优化的一篇深度好文 原文地址: http://www.jianshu.com/p/c056e63dc7a2 正文 对于Android平台上的线程优先级设置来说可以处理很多并发线程的阻塞问题, ...
- Android性能优化(一):APP启动优化
Android性能优化(一):APP启动优化 性能优化系列文章: Android性能优化(一):APP启动优化 Android性能优化(二):UI布局优化 Android性能优化(三):响应优化 An ...
- Android APP启动时出现白屏或者黑屏怎么办?
1.为什么APP启动时会出现白屏或者黑屏? 当打开一个Activity时,如果这个Activity所属的应用还没有在运行,系统会为这个Activity所属的应用创建一个进程,但进程的创建与初始化都需要 ...
- android打开app白色页面,完美解决Android App启动页有白屏闪过的问题
应用启动的时候有短暂的白屏,如图: 可以通过设置theme的方式来解决 @color/colorPrimary @color/colorPrimaryDark @color/colorAccent t ...
- 王学岗性能优化————APP启动优化(黑白屏问题的解决,trace工具的使用,热启动与冷启动的区别)
一:手机启动 这个时候会启动HomeActivity;而各种APP图标就是HomeActivity中的控件,这些控件是可以点击的.与之对应的是,Launcher(继承了Activity)中有onCli ...
最新文章
- 终于有人站出来为程序员说话了
- codevs 2612 最有分解方案 (贪心)
- Linux查看utmp文件,linuxc操作utmp和wtmp文件接口
- NYOJ 286 动物统计
- Java扑克牌(斗地主发牌)
- 牛客网_PAT乙级_1013组个最小数 (20)
- [html] canvas生成图片有没有跨域问题?如果有如何解决?
- PyTorch框架学习十二——损失函数
- Visual Studio中Debug和Release的区别
- 基于dubbo + maven 的项目搭建
- 毕业题目:Matlab GUI界面
- 现代通信技术课程小结
- Mysql中LENGTH()函数
- 2016-2017-1(实变函数56, 点集拓扑56)
- 在家阳台做个小温室,种点小白菜和菠菜
- 如何在Ubuntu上安装并使用Docker
- 设计模式之 State(状态模式)通俗理解
- 做好OKR目标管理,迈出高效协作的第一步
- ap计算机课程的内容,AP系列七|解读AP计算机课程与考试
- 钉钉内网穿透工具,如何使用钉钉小程序访问内网
热门文章
前言 ++一个应用App的启动速度能够影响用户的首次体验,用户希望应用能够及时响应并快速加载.启动时间过长的应用不能满足这个期望,并且可能会令用户失望.这种糟糕的体验可能会导致用户在应用商店针对您的应 ...
Android APP性能优化(最新总结) 在目前Android开发中,UI布局可以说是每个App使用频率很高的,随着UI越来越多,布局的重复性.复杂度也随之增长,这样使得UI布局的优化,显得至关重要 ...
0 纸上谈兵--App启动优化 纸上谈兵系列是我在学习App性能优化的笔记,纸上谈兵这个名字就很好的反应了这次只是启动优化的学习,并没有真正用到实际App的开发过程中(以后专门的同时处理),闲话少说, ...
1.为什么 APP 启动时会出现白屏或者黑屏? 当打开一个 Activity 时,如果这个 Activity 所属的应用还没有在运行,系统会为这个 Activity 所属的应用创建一个进程,但进程的创 ...
App启动优化的一篇深度好文 原文地址: http://www.jianshu.com/p/c056e63dc7a2 正文 对于Android平台上的线程优先级设置来说可以处理很多并发线程的阻塞问题, ...
Android性能优化(一):APP启动优化 性能优化系列文章: Android性能优化(一):APP启动优化 Android性能优化(二):UI布局优化 Android性能优化(三):响应优化 An ...
1.为什么APP启动时会出现白屏或者黑屏? 当打开一个Activity时,如果这个Activity所属的应用还没有在运行,系统会为这个Activity所属的应用创建一个进程,但进程的创建与初始化都需要 ...
应用启动的时候有短暂的白屏,如图: 可以通过设置theme的方式来解决 @color/colorPrimary @color/colorPrimaryDark @color/colorAccent t ...
一:手机启动 这个时候会启动HomeActivity;而各种APP图标就是HomeActivity中的控件,这些控件是可以点击的.与之对应的是,Launcher(继承了Activity)中有onCli ...