Android性能优化
2016-06-02 17:05:39 0 举报
AI智能生成
Android性能优化是提高应用程序运行速度和响应时间的过程。这包括减少内存使用,优化布局,使用异步任务,避免阻塞主线程等。为了实现这一目标,开发者可以使用各种工具和技术,如ProGuard进行代码混淆,Lint检查代码质量,Traceview定位性能瓶颈等。此外,还可以通过合理地设计数据库查询,减少网络请求次数,使用合适的数据结构和算法等方式来提高应用程序的性能。总之,Android性能优化是一个持续的过程,需要开发者不断地学习和实践才能达到最佳效果。
作者其他创作
大纲/内容
稳定性
包大小
apk组成
dex优化:减少java代码
不用枚举
少用不用第三方库,精简
proguard
四个过程
压缩(Shrink)
移除无用的类方法和属性
优化(Optimize)
对字节码进行优化,移除无用的指令
混淆
预检
在Java平台上对处理后的代码进行预检,确保加载的class文件是可执行的
显示行号-keepattributes SourceFile,LineNumberTable,会增加APK的大小
res
资源语言保留一份
在线化,使用时拉取
minifyEnabled true
shrinkResources true
shrinkResources true
移除无用的资源
图片
webp图片
点9图片
xml代替图片
图片复用(可以通过旋转之类的)
VectorDrawable
dpi只用一份
lib
只保留一个abi的
微信资源混淆
resource.arsc
assets、raw
图片、文本、音视频压缩
网络优化
子主题
内存
指导原则:尽量少用、尽量复用
解决内存泄露问题
非静态内部类
Handler等
静态变量引用
handler.postdelay
单例使用不当
资源使用完未关闭(BraodcastReceiver,ContentObserver,File,Cursor,Stream)
webview
图片
565质量
inSampleSize采样率
inbitmap
xml替换图片
三级缓存
双缓冲
列表
RecyclerView代替ListView
ListView两级缓存,RecyclerView四级缓存
RecyclerView根据情况判断不重新bind
缓存池
线程池
对象池
字节数组池
其他
SparseArray、ArrayMap
慎用枚举
StringBuilder代替字符串连接
循环中避免new对象
激进
回收页面fragment和activity
图片不可见回收
glide
工具
android profiler
mat
leakcanary
cpu
四个原因
任务太多
任务耗时
挂起
锁
启动优化,原则:能不做就不做,能少做就少做,能拖就拖,能异步就异步
异步加载
懒加载
优化布局
viewstub
减少布局层次
constraintlayout
界面布局更容易,所见即所得
布局相对位置更好控制,对齐更容易
动态创建布局方便,对控件的控制能力更加强大,可以实现动画效果
层次更少,性能更好
merge标签
include
theme主题优化
去掉不必要的背景
windowbackground
去掉Runtime注解
应用“秒开”
启动页背景设置图片
ANR
避免主线程读写io任务、计算任务等耗时任务
避免锁的竞争
流畅度(UI)
避免主线程耗时任务
异步
onDraw里尽量避免new 对象
布局优化
避免过度渲染
背景(theme、window、view)去除
避免setAlpha
Canvas. clipRect
解决被遮挡部分不渲染
解决被遮挡部分不渲染
加快渲染
include
viewstub
延迟动画,在view渲染完成后
不使用layout_weight属性
不要频繁改变View的大小或者requestLayout
用SurfaceView或TextureView代替普通View
尽量不用没有硬件加速的绘制方法,条件允许可以使用OpenGL绘制
减少层级
merge
constraintLayout
减少元素
ImageView+TextView ---> TextView
图片加载
Bitmap.prepareToDraw()
Android7.0后添加的API
在图片Decode之后调用,可以使Bitmap在RenderThread空闲的时候提前上传
Glide、Fresco已经支持
Android7.0后添加的API
在图片Decode之后调用,可以使Bitmap在RenderThread空闲的时候提前上传
Glide、Fresco已经支持
点9图片
inBitmap
列表滑动优化(RecyclerView)
Prefetch
抛弃notifyDataSetChanged,使用DiffUtil
快速滑动不加载图片
xml或代码代替图片
工具
pc
Hierarchy viewer(查看Measure、layout、draw三个过程中的性能)
Systrace
手机
开发者工具
Profile GPU Rendering
android studio
lint
0 条评论
下一页