IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android优化工具及常用方法 -> 正文阅读

[移动开发]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中执行了耗时的操作。

总结

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

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-21 15:35:19  更:2021-08-21 15:35:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 9:55:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码