阿里Android开发手册笔记---Bitmap、Drawable 与动画

1、加载大图片或者一次性加载多张图片,应该在异步线程中进行。图片的加

载,涉及到 IO 操作,以及 CPU 密集操作,很可能引起卡顿

2、在 ListView,ViewPager,RecyclerView,GirdView 等组件中使用图片时,
应做好图片的缓存,避免始终持有图片导致内存泄露,也避免重复创建图片,引起
性 能 问 题 。 建 议 使 用 Fresco ( https://github.com/facebook/fresco )、 Glide

(https://github.com/bumptech/glide)等图片库。

3、png 图片使用 tinypng 或者类似工具压缩处理,减少包体积

4、应根据实际展示需要,压缩图片,而不是直接显示原图。手机屏幕比较小,

直接显示原图,并不会增加视觉上的收益,但是却会耗费大量宝贵的内存

5、使用完毕的图片,应该及时回收,释放宝贵的内存

6、在 Activity.onPause()或 Activity.onStop()回调中,关闭当前 activity 正在执

行的的动画。

7、在动画或者其他异步任务结束时,应该考虑回调时刻的环境是否还支持业
务处理。例如 Activity 的 onStop()函数已经执行,且在该函数中主动释放了资源,

此时回调中如果不做判断就会空指针崩溃

8、使用 inBitmap 重复利用内存空间,避免重复开辟新内存

9、使用 ARGB_565 代替 ARGB_888,在不怎么降低视觉效果的前提下,减少

内存占用

10、尽量减少 Bitmap(BitmapDrawable)的使用,尽量使用纯色(ColorDrawable)、
渐变色(GradientDrawable)、StateSelector(StateListDrawable)等与 Shape 结

合的形式构建绘图

11、谨慎使用 gif 图片,注意限制每个页面允许同时播放的 gif 图片,以及单个

gif 图片的大小

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

体积。

13、在有强依赖 onAnimationEnd 回调的交互时,如动画播放完毕才能操作页
面 , onAnimationEnd 可 能 会 因 各 种 异 常 没 被 回 调 ( 参 考 :
https://stackoverflow.com/questions/5474923/onanimationend-is-not-getting-calle
d-onanimationstart-works-fine ), 建 议 加 上 超 时 保 护 或 通 过 postDelay 替 代

onAnimationEnd。

14、当 View Animation 执行结束时,调用 View.clearAnimation()释放相关资源。










猜你喜欢

转载自blog.csdn.net/qq_28791419/article/details/79842557