浅谈Android启动速度性能优化

app启动是和用户的第一个交互过程,app启动速度是否过慢,启动过程中会不会遇到白屏黑屏,是在app测试过程中需要关注的方面。流畅快速的启动app,会给用户留下良好的第一印象。本文简单谈谈app启动速度性能优化内容。

启动流程概述

浅谈Android启动速度性能优化_第1张图片

启动流程:

①点击桌面App图标,Launcher进程采用Binder IPC向system_server进程发起startActivity请求;

②system_server进程接收到请求后,向zygote进程发送创建进程的请求;

③Zygote进程fork出新的子进程,即App进程;

④App进程,通过Binder IPC向sytem_server进程发起attachApplication请求;

⑤system_server进程在收到请求后,进行一系列准备工作后,再通过binder IPC向App进程发送scheduleLaunchActivity请求;

⑥App进程的binder线程(ApplicationThread)在收到请求后,通过handler向主线程发送LAUNCH_ACTIVITY消息;

⑦主线程在收到Message后,通过发射机制创建目标Activity,并回调Activity.onCreate()等方法。

⑧到此,App便正式启动,开始进入Activity生命周期,执行完onCreate/onStart/onResume方法,UI渲染结束后便可以看到App的主界面。

启动速度性能检测工具

随着项目不断的快速迭代,需要从启动过程找出优化点,可能在App主进程启动阶段或者在主界面启动阶段放了很多初始化其他业务的逻辑,这些业务落地可能一开始并不需要用到。那么如何找到引起性能问题的原因?在这里我们借用友盟+U-APM工具,启动速度性能检测的一个很好用的工具。

友盟+U-APM工具中的启动分析通过提供详尽的启动耗时、慢启动情况、启动崩溃数据。帮助您把控应用的启动性能状态,从源头减少客户流失

浅谈Android启动速度性能优化_第2张图片

APM友盟+推出的App稳定性监控、性能监控和云真机测试平台。通过轻量级的集成接入即可拥有实时、可靠、全面的应用崩溃、ANR、自定义异常等捕获能力,及卡顿、启动分析等性能能力,支持多场景、多通道智能告警监控,帮助开发者高效还原异常、卡顿用户的访问路径和业务现场,缩短故障排查时间。

另外友盟+U-APM工具还提供云真机测试能力,助力开发者从研发测试质量验收到线上问题复现排查,保障应用品质,提升测试效率。在云真机测试期间自动采集崩溃信息,提供详尽的崩溃报告协助筛查,真正实现监控测试全流程深度打通。

从启动过程找出优化点

启动时间是系统性能的重要组成部分,因为用户必须等待启动完成后才能使用设备。首先需要明确的是,在Application的onCreate之前,这个时间都是无法进行优化的,因为这部分是系统替我们完成的,开发者无能为力。所以我们能做的,就是从Application的onCreate方法开始,到lauyout_main.xml第一次布局绘制完成之前,来进行启动时间的优化。

App启动过程中我们优化的地方包括主进程启动流程和主界面启动流程,主进程启动就是Application的创建过程,主界面启动就是MainActivity的创建过程;

只需要分别对这两个部分进行优化即可:

1.Application中attachBaseContext最早被调用,随后是onCreate方法,尽量在这两个方法中不要有耗时操作;

2.MainActivity中重点关注onCreate,onResume,onWindowFocusChange;

结语:

启动性能速度优化是一条持续之路,通过工具的检测,我们可以了解到影响启动性能的因素有哪些,这样我们平时在编码的过程中就会多注意自己的代码性能,这里只使用了友盟+的部分功能,想了解更多功能及产品详情可以到友盟+官网咨询。

你可能感兴趣的:(信息,APP,java,后端)