2 u012131702 u012131702 于 2014.12.14 16:56 提问

关于加载多量数据的问题,如何优化。求指点迷津

列如,我的一个Activity要加载n张图片,我知道了路径为一个list,
一下子加载完很不好吧?
1.有没有加载一半的做法?该如何做?
2.加载了图片用了,之后不用了,我如何让它释放?
3.是不是生成n个ImageView?

在这里提问个这样的问题,因为我想弄一个Image的视频。你想想,一个MP4就上1G。人家是如何加载的?

6个回答

zhangyawen1i
zhangyawen1i   2014.12.17 23:47
已采纳

图片缓存框架 universal image loader

1.有没有加载一半的做法?该如何做?

用的时候就加载

2.加载了图片用了,之后不用了,我如何让它释放?

自动处理 当内存缓存满的时候,按照你自己定义的策略 比如最近最少使用, FIFO等去释放之前的图片

3.是不是生成n个ImageView?

不用N个, 几个就行了复用就行了!

danielinbiti
danielinbiti   Ds   Rxr 2014.12.14 18:38

显示几张加载几张,加载完bitmap.recycle
如果图片大,可以对图片缩放

luowenlong860502
luowenlong860502   2014.12.15 08:33

开启一个线程,加载一张显示一张,显示完即可释放

lincyang
lincyang   Rxr 2014.12.15 13:29

你的activity上要同时显示几张图片有要求吗?
如果就显示一张,那么可以多缓存一张。当然了,加载的过程要开启一个新线程在后台来做。
如果要显示多张,可以考虑HorizontalListView。

sunmc1204953974
sunmc1204953974   2014.12.17 14:45

ListView和GridView都是自带动态加载的,不会OOM的,但是画廊控件是不行的,ListView和GridView都是内部有一个item重用机制,比如一个屏幕有8个item,item8出屏幕之后就会添加到可重用item的队列中,然后当下一个item出现,就会从可重用的item中拿出,重新加载图片和布局再显示,也就是说对象数就是这几个item,大大节省了内存,如果楼主要自己进行动态加载,也是这个原理,对象数目不变,变的只是对象上显示的内容。listView使用Holder的方法使得每次都不用再初始化布局,大大提高了效率和流畅度,关于ListVIew的使用和适配器的问题可以看我的博客:
http://blog.csdn.net/sunmc1204953974/article/details/38170331,共有6篇小教程,暑假写的

sunmc1204953974
sunmc1204953974   2014.12.17 14:45

ListView和GridView都是自带动态加载的,不会OOM的,但是画廊控件是不行的,ListView和GridView都是内部有一个item重用机制,比如一个屏幕有8个item,item8出屏幕之后就会添加到可重用item的队列中,然后当下一个item出现,就会从可重用的item中拿出,重新加载图片和布局再显示,也就是说对象数就是这几个item,大大节省了内存,如果楼主要自己进行动态加载,也是这个原理,对象数目不变,变的只是对象上显示的内容。listView使用Holder的方法使得每次都不用再初始化布局,大大提高了效率和流畅度,关于ListVIew的使用和适配器的问题可以看我的博客:
http://blog.csdn.net/sunmc1204953974/article/details/38170331,共有6篇小教程,暑假写的

Csdn user default icon
上传中...
上传图片
插入图片