本篇从多个部分分析性能优化(更新中。。。):数据库
常见的内存问题:内存泄漏 + OOM(内存溢出)。
内存泄漏:对象使用完没有释放,也就是内存再也不使用了可是 GC 却不回收。
OOM:内存占用超过了 Android 系统给 app 分配的最大内存。缓存
其中,内存泄漏若是一直增大也会形成 OOM。性能优化
会形成:卡顿
缘由有:网络
如线程、AsyncTask、Handler 持有了 Activity 引用,当 Activity 销毁时,线程任务没有处理完,继续运行。那么 Activity 对象就不会被回收。
解决办法:app
待完善...ide
集合使用完,清空。布局
除了内存泄漏会形成 OOM,部分低端设备内存小,Bitmap 也是一个常见缘由。尽量减小 Bitmap 的内存占用。性能
对于低端设备,能够关闭复杂的动画、使用 565 格式图片、使用更小的缓存。
设备分级策略:device-year-class 会根据手机的内存、CPU 核心数和频率等信息决定设备属于哪个年份。学习
对图片进行缓存优化
三级缓存机制:内存缓存、本地缓存、网络缓存。
使用 Glide 库加载图片,Glide 对处理图片作了不少方面优化(LruCahce、DiskLruCache、生命周期集成、Bitmap 复用和主动回收等);
屏幕上某个像素,在同一帧的时间内,被绘制屡次。
使用 OpenGL 绘图(这个学习成本高)。