在上一篇文章 如何开发一个新闻订阅APP之Android篇(二、从“逛”页面谈谈多种格式listview的实现细节)中,我介绍了lsitView的多种布局的实现细节,这其中包含了很多图片的显示。其实当前比较流行的APP中,随处可见大量的图片,这里把自己遇到的一些问题总结出来,
简单的加载图片通常需要注意以下两个细节:
1、在开发android程序时,如果你在UI线程,也就是主线程中做了类似于网络连接这些事的时候,程序是不能运行的。因为android的开发规范要求,主UI线程不允许处理一些耗时任务,如果需要连接网络获取数据,你需要在子线程中完成这件事。android提供了Handler和AsyncTask等封装好的异步消息处理机制。它们使得你非常方便的在子线程和UI线程之间进行通信和切换。关于AsyncTask,这篇文章讲的非常透彻 Android AsyncTask完全解析,带你从源码的角度彻底理解,这里就不多赘述了。
2、这个列表页有很多的图片。很容易想象,手机的内存资源是很宝贵的,如果不对内存加以控制,可能APP很快就会出现OOM错误。控制内存溢出有很多方法,一般来讲,都是利用缓存机制,通常有内存缓存和Disk缓存两层控制即可。
对于程序中图片的内存控制问题,这篇博文同样讲的非常透彻:
Android高效加载大图、多图解决方案,有效避免程序OOM
除此之外,初学者很可能会遇到的一个坑是图片的大小和imageView大小之间的关系。如果你将一张大于屏幕大小的图片不经处理直接加载到imageView中,这本身没有什么问题,图片会根据你的imageView的设置自动缩放(除非单张图片直接超过了android默认的内存限制,图片会无法显示),但是可能依据你的程序实现会出现

本文探讨了在Android开发中处理图片加载时遇到的挑战,包括UI线程限制、内存溢出和图片大小与内存占用的关系。推荐了Android-Universal-Image-Loader库以简化图片加载,并建议初学者通过实践理解图片处理的细节,以避免内存问题。
最低0.47元/天 解锁文章
947

被折叠的 条评论
为什么被折叠?



