相对于文字来说,图片的表达更直接、更有冲击力、更容易吸引用户的眼球。设计师们也理所当然的喜欢用图片来传达信息。但是对于开发者来说,图片就意味着大量的内存开销。要想APP在性能上有更好的表现,我们必须处理好显示图片所需要的每个环节。 (本文出处:http://www.jianshu.com/p/eadb0ef271b0) Android中高效的显示图片 - 总结前面几篇关于高效显示图片的文章已经实现了一个**缓存、后台加载、裁剪大图的图片加载框架。框架大致如图所示,还有部分知识点图里没有体现(如Activity重建时利用Fragment保存数据),详细情况可以查看之前的文章。完整代码可以点击代码下载。
图片加载流程.png 管理bitmap内存上面第4条之所以没有链接,是因为它就是本节要讲述的内容。加载图片时所申请的内存位于哪里,当图片不再使用时这部分已经申请的内存能否被其他需要加载的图片直接复用,当内存确实需要释放时又是如何回收的?这些疑问都会在本节内容中找到答案。 随着Android系统版本的不断的更新,Android团队在图片内存管理方面也做了一些优化。
Android2.3上bitmap的内存模型 Android3.0上bitmap的内存模型 不同Android版本对bitmap内存管理方式不同,我们应对症下药的来优化不同版本上bitmap的内存使用。 Android 2.3.3 (API level 10)及其以下版本在Android 2.3.3 (API level 10)及其以下版本上,Android开发文档推荐我们使用
下面提供了一个使用recycle()的代码示例。我们使用了引用计数来判断bitmap是否是被显示或者被缓存。当一个bitmap不再被显示也没有被缓存时我们就调用bitmap的recycle()方法来释放内存。 Android 3.0 (API level 11)及其以上版本Android 3.0 开始引入了 下面是bitmap内存复用的代码示例。大致分两步:1、不用的bitmap用软引用保存起来,以备复用;2、使用前面保存的bitmap来创建新的bitmap。
上面代码片段中使用的
完整代码可以点击代码https://developer.android.com/downloads/samples/DisplayingBitmaps.zip下载。 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|