前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >笔记——安卓优化(十八)

笔记——安卓优化(十八)

作者头像
木溪bo
发布2019-07-26 14:36:09
4350
发布2019-07-26 14:36:09
举报

——个人平时笔记,看到的同学欢迎指正错误,文中多处摘录于各大博主与书籍精华

一、优化 1.布局优化:尽量减少布局文件层级嵌套,由于RelativeLayout会onMeasure两次,减慢绘制时间,所以,简单布局使用LinearLayout,复杂的用RelativeLayout。使用include标签,merage标签,ViewStub控件加大布局控件的复用率。 2.绘制优化:尽量避免在onDraw方法内做大量的操作。比如不要创建新的局部对象,不要做耗时操作。 3.内存泄漏优化:非静态内部类默认持有外部引用,静态内部类默认不持有外部引用;单例模式导致的内存泄漏,单例的生命周期与application保持一致,由于创建单例时的activity无法被及时释放;属性动画导致的,无限循环动画没有在onDestroy中终止和释放,应该调用animator.cancle()停止动画。 内存泄漏与解决总结

1.工作线程Thread类属于非静态内部类 / 匿名内部类,运行时默认持有外部类的引用,当工作线程运行时,若外部类MainActivity需销毁,由于此时工作线程类实例持有外部类的引用,将使得外部类无法被垃圾回收器(GC)回收,从而造成 内存泄露。

image

4.ListView优化,使用ViewHolder,不在getView中做耗时操作,通过滑动监听来判断是否需要加载itme图标。 5.Bitmap使用采样率按控件大小来加载所需图片资源大小。图片三级缓存。 6.其他优化:避免创建过多的对象,不要过多使用枚举占用内存空间比整型大,常量使用static final修饰,尽量采用静态内部类避免内部类导致的内存泄漏。 7.在数据使用上,能放栈就不放堆,能私有就不公开。 二、内存分析工具 1.内存泄漏分析工具:MAT(Eclipse Memory Analyzer),分析app内存状态 2.Memory Monitor是Android Studio自带的内存监视工具Memory Monitor使用介绍 3.TraceView可视化性能调查工具,可以分析TraceView日志 三、图片优化 1、Bitmap的加载和Cache:Android对单个应用所施加的内存限制,比如16MB或者更大(各个手机厂商决定),这导致加载Bitmap的时候很容易出现内存溢出,这时就需要用到缓存策略思想了。目前比较常用的缓存策略是LruCache和DiskLruCache,其中LruCache常被用做内存缓存,而DiskLruCache常被用做存储缓存。 Bitmap使用BitmapFactory类加载,该类提供了四个方法:decodeFile、decodeResource、decodeStream和decodeByteArray,分别用于支持从文件系统、资源、输入流以及字节数组中加载出一个Bitmap对象,其中decodeFile和decodeResource又间接调用了decodeStream方法。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.07.25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档