安卓编程技巧总结(5)图片处理


1.图片的加载

加载大图片或者一次性加载多张图片,尽量在异步线程中进行。
常用图片加载框架有很多,如:Glide、ImageLoader等,
可参考:
https://www.jianshu.com/p/9034a40fdadb

2.图片释放

确定图片不再使用后,应及时释放内存。
bmp.recycle();

3.动画

-- 在 Activity.onPause()或 Activity.onStop()回调中,应关闭当前 activity 正在执行的的动画;
imageView.clearAnimation()

-- 在动画或者其他异步任务结束时,应该考虑回调时刻的环境是否还支持业务处理。
例如 Activity 的 onStop()函数已经执行,且在该函数中主动释放了资源,此时回调中如果不做判断就会空指针崩溃。
  1. UI卡顿、OOM
-- 图片的加载,涉及到 IO 操作,以及 CPU 密集操作,很可能引起卡顿,甚至OOM,应进行缓存、压缩等优化处理。
-- 图片的缓存通常用LruCache mMemoryCache处理,也可以使用第三方工具Glide等,请自行查询资料。
-- 使用 ARGB_565 代替 ARGB_8888,,注意RGB_565 是没有透明度的,如果图片本身需要保留透明度,那么
就不能使用 RGB_565;
Config config = drawableSave.getOpacity() != PixelFormat.OPAQUE ? Config.ARGB_8888 :Config.RGB_565;
Bitmap bitmap = Bitmap.createBitmap(w, h, config);
-- 谨慎使用 gif 图片,注意限制每个页面允许同时播放的 gif 图片,以及单个gif 图片的大小;
-- 当View Animation 执行结束时,调用 View.clearAnimation()释放相关资源。
-- 图片可使用软引用,请自行查找GC 可达性回收相关资料(强、软、弱、虚、不可达)
-- 释放内存!释放内存!释放内存!

更多图片相关的内容,请查看安卓编程技巧总结(1) 资源与UI布局处理


第一篇: 安卓编程技巧总结(1) 资源与UI布局处理

https://www.jianshu.com/p/ff97b15d5c9d

第二篇: 安卓编程技巧总结(2) 基础组件开发

https://www.jianshu.com/p/b05752377887

第三篇:安卓编程技巧总结(3) 进程与线程处理

https://www.jianshu.com/p/7d05c8a368bd

第四篇:安卓编程技巧总结(4) 数据文件处理

https://www.jianshu.com/p/0515df3b697d

第五篇:安卓编程技巧总结(5) 图片处理

https://www.jianshu.com/p/76690b2ba310

第六篇:安卓编程技巧总结(6) APP安全分析

https://www.jianshu.com/p/4347ff392122

第七篇:安卓编程技巧总结(7) 性能检测代码分析

https://www.jianshu.com/p/687f3c641408

你可能感兴趣的:(安卓编程技巧总结(5)图片处理)