Android Bitmap&Drawable&动画的优化建议

  1. 加载大图片或者一次性加载多张图片,应该在异步线程中进行图片的加载,涉及到 IO 操作,以及 CPU 密集操作,很可能引起卡顿。

  2. 在 ListView,ViewPager,RecyclerView,GirdView 等组件中使用图片时,应做好图片的缓存避免始终持有图片导致内存溢出,也避免重复创建图片,引起性能问题。使用Glide等图片库

  3. 使用 webp 替换 png 格式,或者使用 TinyPNG 类似工具压缩处理,减少包体积

  4. 应根据实际展示需要,压缩图片,而不是直接显示原图。手机屏幕比较小,直接显示原图,并不会增加视觉上的收益,但是却会耗费大量宝贵的内存。

  5. 在 Activity#onPause()或 Activity#onStop()回调中,关闭当前 activity 正在执行的的动画

  6. 在动画或者其他异步任务结束时,应该考虑回调时的环境是否还支持业务处理。Activity 的 onStop()函数已经执行,且在该函数中主动释放了资源,此时回调中如果不做判断就会空指针崩溃。

  7. 使用 RGB_565 代替 RGB_888,减少内存占用。大多数场景使用的是ARGB_8888 和 RGB_565,RGB_565 能够在保证图片质量的情况下大大减少内存的开销,是解决 OOM 的一种方法。但是一定要注意 RGB_565 是没有透明度的,如果图片本身需要保留透明度,那么就不能使用 RGB_565

  8. 大图片资源不要直接打包到 apk,可以考虑通过文件仓库远程下载,减小包体积

发布了342 篇原创文章 · 获赞 174 · 访问量 98万+

猜你喜欢

转载自blog.csdn.net/jdfkldjlkjdl/article/details/104946825