Android优化工具及常用方法


前言

大部分的时间都在做业务开发,优化方面的工作其实相对占比较少,但也总会出现一些莫名其妙的问题,比如卡顿丢帧,必要的优化方法和工具还是要了解的。此处只做一下备忘和记录,至于具体深层次的使用网上有大佬写的已经很详细了,推荐极客时间张绍文的Android开发高手课程,里面对性能优化做了很明确的引导,但有些难度,追求深度的话可以研究,但文字叙述学习起来困难很大。

一、优化方向

老生常谈的话题,就Android端的APP而言优化的方向有以下:

  • 布局
  • 卡顿
  • 线程
  • 网络
  • 耗电
  • 内存
  • 等等
    虽然每一项都只有两个字,但每一个处理起来都不是一下两下就能搞定的,目前的情况是要保持做到对于明显级别的性能问题要有思路,至于细致入微的优化可能需要更多精力去研究。

二、常用工具

Systrace
Layout Inspector
Cloneographer
Profile
StrictMode
手机系统自带的一些辅助开发工具等
以上的工具都可以在开发文档中找到使用的方。
## Systrace
使用 Python 生成html文件,轻量级开销小,监控API 线程调用情况。

这里记录一下Android Device Monitor启动的问题,缺少jre文件

Layout Inspector

AS自带的布局检测工具,对于布局深度过大层次嵌套太深有帮助,使用也很简单,可以在编译器内部直接预览查看。

Cloneographer

 主要关注的是帧率。

StrictMode

检测主线程中本地磁盘和网络读写等耗时的操作,源码中也做了相关的介绍和使用说明。

 if (DEVELOPER_MODE) {
 *         StrictMode.setThreadPolicy(new {@link ThreadPolicy.Builder StrictMode.ThreadPolicy.Builder}()
 *                 .detectDiskReads()
 *                 .detectDiskWrites()
 *                 .detectNetwork()   // or .detectAll() for all detectable problems
 *                 .penaltyLog()
 *                 .build());
 *         StrictMode.setVmPolicy(new {@link VmPolicy.Builder StrictMode.VmPolicy.Builder}()
 *                 .detectLeakedSqlLiteObjects()
 *                 .detectLeakedClosableObjects()
 *                 .penaltyLog()
 *                 .penaltyDeath()
 *                 .build());
 *     }

Profile

也是AS自带的分析工具,异常好用,可以清晰的看到时间段内的内存、CPU、网络的使用情况,对于内存的优化很有帮助,可以查看堆栈的情况,对于卡顿问题也可以查看场景内的调用栈,分析耗时时间从而找到导致主线程卡顿的原因。

TraceView

TraceView 是 Android SDK 中内置的一个工具,它可以加载 trace 文件,用图形的形式展示代码的执行时间、次数及调用栈,便于我们分析。
Debug.startMethodTracing(“path”); 可以生成文件

卡顿

关于卡顿多说一句,对于Android而言,由于UI线程及主线程的机制,界面控件的刷新渲染只能在主线程进行,16ms发送一次Vsync信号触发UI渲染,每一帧都要在16ms之内完成,大多数的Android设备的刷新率是60HZ,及一秒钟显示60帧,超过这个刷新率其实人眼是无感知的,相反如果一帧的渲染时间过长就会出现丢帧。而所谓的卡顿其实就是主线程被阻塞来不及刷新界面的现象,或者说在主线程handler的dispatchMessage中执行了耗时的操作。

总结

工具的使用是为了找到问题,业务开发之外的能力,对于各种优化方向,还要持续总结方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值