[Android开发艺术探索阅读笔记]第15章 性能优化

本文提供了Android性能优化的方法,包括布局、绘制、内存泄漏、响应速度、ListView、Bitmap和线程优化等方面的内容,并给出了一些实用的建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2015年Google在YouTube上发布了关于Android性能优化典范的专题,通过一系列短视频来帮助开发者创建更快更优秀的Android应用,课程专题不仅仅介绍了Android系统中有关性能问题的底层工作原理,同时也介绍了如何通过工具来找出性能问题以及提升性能的建议,地址是:https://www.youtube.com/playlist?list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE

性能优化方法

主要有:

  1. 布局优化
  2. 绘制优化
  3. 内存泄漏优化
  4. 响应速度优化
  5. ListView 优化
  6. Bitmap 优化
  7. 线程优化
  8. 一些性能优化建议

布局优化

思想是减少布局的层级。

有选择的使用一些性能不高的布局:如 RelativeLayout,它的布局需要花费更多的时间。

使用 <inclue><merge>、和 ViewStub

绘制优化

避免在 onDraw() 中执行大量的操作。

避免在 onDraw() 中创建新的局部对象,因为 onDraw() 会被多次调用,会导致频繁 GC。

不能做耗时操作。

内存泄漏优化

避免写出有内存泄漏的代码,利用 MAT 等工具查找。

  1. 静态变量
  2. 单例
  3. 属性动画

响应速度优化和 ANR 日志分析

避免将耗时操作放在主线程中执行。
Activiy 5s 无法响应屏幕触摸事件就会发生 ANR,BroadcastReceiver 是 10s。

一个进程发生 ANR 后,系统会在 /data/anr 创建一个文件 traces.txt

ListView 和 Bitmap 优化

ListView

  1. 复用 ViewHolder
  2. 当列表在滑动时不适合做大量异步认为
  3. 可以开启硬件加速

Bitmap

通过 BitmapFactory.Options 根据需要对图片进行采样,利用 inSampleSize 进行裁剪减小 Bitmap 的大小。

线程优化

采样线程池,复用线程。控制线程的最大并发数。

一些建议

  1. 避免创建过多的对象;
  2. 不要过多使用枚举,枚举占用的内存空间要比整型大;
  3. 常量请使用static final来修饰;
  4. 使用一些Android特有的数据结构,比如SparseArray和Pair等,它们都具有更好的性能;
  5. 适当使用软引用和软引用;
  6. 采用内存缓存和磁盘缓存;
  7. 尽量采用静态内部类,这样可以避免潜在的由于内部类而导致的内存泄露。

MAT 分析工具

全称 Eclipse Memory Analyzer。

下载地址:http://www.eclipse.org/mat/downloads.php

提高程序的可维护性

  1. 命名规范
  2. 代码留出适当的空白区分不同的代码块
  3. 只给关键的地方写注释

一段繁琐的业务逻辑,应该适当拆分为几个小的函数或者类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值