Android性能优化
来源:互联网 发布:高维数据进行降维 编辑:程序博客网 时间:2024/06/06 01:28
(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
- 【Android】android性能优化
- 【Android】Android性能优化
- 【Android】Android性能优化
- 【Android】【性能优化】 Android 性能优化
- Android性能优化---布局优化
- Android性能优化---布局优化
- android 内存优化 性能优化
- android 内存优化 性能优化 .
- Android 性能优化、内存优化
- Android 性能优化、内存优化
- android性能优化--overdraw优化
- android性能优化---数据库优化
- android性能优化--布局优化
- Android 性能优化、内存优化
- android性能优化--overdraw优化
- Android性能优化-布局优化
- Android性能优化-布局优化
- Android性能优化-数据优化
- 第十一周 【项目2
- UEditor的使用
- java动态获取src目录下的文件路径
- 安卓4.4.2预置第三方apk,进行系统签名
- ionic星星评分 滑动
- Android性能优化
- 使用CountVectorizer和TfidfVectorizer对fetch_20newsgroups数据进行分类,并对是否使用停用词进行对比(精确度)
- 将apk文件放ftp,访问出现404错误
- 【Oracle】oracle数据库连接失败:ORA-28547:connection to server failed,probable oracle Net admin error;
- Java算法之冒泡排序法
- 王百琛对于前一段时间的反思
- 第十一周 【项目3
- nginx配置起服务
- 矩阵定义收集