Android性能优化分析--启动速度

20 篇文章 1 订阅
17 篇文章 0 订阅

Android应用开发者经常要想尽办法来提升程序性能。由于应用越来越复杂,这个问题也变得越来越棘手。性能优化的过程分两部分:发现性能瓶颈,制定方案、解决性能问题。解决性能问题的方案需要具体情况具体分析,并没有完全固定的路子,更多的是靠经验的积累,下面就启动速度优化方面我们一起来谈一谈。

了解启动速度

启动的类型,一般分为冷启动和热启动

冷启动:启动时,后台没有任何该应用的进程,系统需要重新创建一个进程,并结合启动参数启动该应用。

热启动:启动时,系统已经有该应用的进程(比如按 home 键临时退出该应用)下启动该应用。

  如何获取启动时间

1、adb 命令

adb shell am start -S -W 包名/启动类的全名

adb shell am start -S -W xxx/xxxActivity

Stopping: xxx

Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=xxx/xxxActivity }

Status: ok

Activity: xxx/xxxActivity

ThisTime: 770

TotalTime: 770

WaitTime: 848

Complete

ThisTime: 表示最后一个 Activity 启动时间

TotalTime: 表示启动过程中,所有的 Activity 的启动时间

WaitTime: 表示应用进程的创建时间 + TotalTime

一般我们关注 TotalTime 就好了。

2、时间戳

时间戳的方法基于以下的 2 个知识点。

应用进程刚创建,会调用 Application 的 onCreate 方法。

首次进入一个 Activity 后会在 onResume() 方法后面调用 onWindowsFocusChange 方法。

结合这 2 个特性,我们可以在 A Application 的 onCreate() 方法和 Activity 的 onWindowsFocusChange 方法里面,通过时间戳来获取应用的冷启动时间。

如何监控启动过程

1、友盟+U-APM应用性能检测工具

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

友盟+U-APM核心功能,错误捕获能力强,类型丰富 提供Java崩溃、Native崩溃、Swift崩溃、Objective-C崩溃、ANR、自定义异常的捕捉。快速定位错误根源 提供行为日志、详细日志、内存快照、设备信息、自定义字段,快速发现问题原因,提升问题解决效率并且7*24小时监控应用情况。

2、启动分析功能

功能概述:

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

功能介绍

启动趋势:

展示应用启动耗时的平均值、分位值、区间分布等数据,以及启动阶段的性能分解数据,展示预置采集的阶段性数据和您自定义的阶段数据,

慢启动分析:

展示慢启动情况的占比以及慢启动设备列表,您可以在启动设置中自定义慢启动的划分,默认首次启动/冷启动超过3秒为慢启动,热启动超过1秒为慢启动。

启动崩溃分析:

归纳启动阶段中出现的崩溃信息,可追溯到崩溃详情。

 一般优化方法

1.耗时操作放到异步进程

比如文件解压、读写等耗时 IO 操作可以新开一个线程来执行。

2.延时初始化

即暂时不适用的工具类等延后到使用的时候再去初始化。比如从 xml 里面读取颜色,可以考虑在使用的时候再去读取和解析。

3.线程优化

线程的创建需要消耗较多的系统系统资源,减少线程的创建。可以考虑共用一个线程池。

 小结

以上总结所涉及到的优化点,可能不是很全,也难免有遗漏,还请大家指正。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值