Android性能优化

(1).布局优化
降低布局层级的嵌套,能够用LinearLayout和FrameLayout解决问题的尽量使用LinearLayout,因为RelativeLayout的绘制过程相对复杂,如果不可以则使用
RelativeLayout。
(2).使用<include><merge>标签和ViewStub布局减少层级的嵌套,减少绘制的次数。
2.绘制优化
(1).onDraw()中尽量减少频繁的使用,频繁的使用会造成大量的内存碎片,占用过多的内存,导致频繁的GC,内存抖动,导致绘制过程不流畅。
(2).onDraw()方法中尽量减少耗时的操作,也尽量减少大量的循环操作,导致CPU不断的被占用,16ms内不能正常的绘制,导致丢帧。
3.内存泄漏
(1).静态变量导致内存泄漏,静态变量持有对当前Activity的引用,导致当前Activity一直被指向,不能够被正常的释放,导致内存泄漏
(2).单例导致的内存泄漏,一般只有创建了单例对象,当前的Activity被单例对象持有,但是单例的特点就是整个application的生命周期都存在,导致当前Activity一直被持有,不能被释放。所以,单例模式中传的上下文一般都是传application的上下文
(3).属性动画导致的内存泄漏,原因是因为当Activity虽然结束了,但是动画一直都在执行,导致Activity一直被持有,不能被释放,导致内存泄漏,应该在结束时候cancel().相对应的例子有好多:四大组件的广播需要解注册,服务需要解,内容提供者也同样需要解,Handler也同样需要
总结内存泄漏:归根结底就是当前对象被外部变量持有,不能够执行自身的生命周期,内存不能够被正确的识别回收。
4.响应速度及ANR(data/anr/traces.txt)
5.ListView的优化
(1).在getView中使用ViewHolder减少findViewById的次数
(2).RecycleBin减少ListView的重复创建
(3).在快速滑动的时候暂停图片加载,在完全停止时,启动图片加载
6.Bitmap的优化
根据不同情况使用不同的压缩算法 ,质量压缩(上传下载,压缩的长度变小了也就是你的存储大小,但是你的占用内存并没有发生变化),采样率压缩(占用内存发生变化,显示),WEBP压缩(有损压缩变小)
图片的占用内存计算公式 :图片宽 * 图片高 * 图片一像素点所占字节数
Alpha_8 A = 8= 1byte ARGB_8888 = 4byte ARGB_4444 = 2byte RGB_565 = 2byte
A = Alpha R = red G = green B = blue
7.线程优化
在频繁的创建和销毁线程时,使用线程池对线程进行管理,减少线程切换带来的资源的浪费和线程阻塞。
Executor ExecutorService ThreadPoolExecutor Executors
8.通过内存泄漏的工具进行内存泄漏分析
MAT hprof文件 GC path /Android Monitor

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值