问题描述
- 关于加载多量数据的问题,如何优化。求指点迷津
- 列如,我的一个Activity要加载n张图片,我知道了路径为一个list
一下子加载完很不好吧?
1.有没有加载一半的做法?该如何做?
2.加载了图片用了,之后不用了,我如何让它释放?
3.是不是生成n个ImageView?在这里提问个这样的问题,因为我想弄一个Image的视频。你想想,一个MP4就上1G。人家是如何加载的?
解决方案
图片缓存框架 universal image loader
1.有没有加载一半的做法?该如何做?
用的时候就加载
2.加载了图片用了,之后不用了,我如何让它释放?
自动处理 当内存缓存满的时候,按照你自己定义的策略 比如最近最少使用, FIFO等去释放之前的图片
3.是不是生成n个ImageView?
不用N个, 几个就行了复用就行了!
解决方案二:
显示几张加载几张,加载完bitmap.recycle
如果图片大,可以对图片缩放
解决方案三:
开启一个线程,加载一张显示一张,显示完即可释放
解决方案四:
你的activity上要同时显示几张图片有要求吗?
如果就显示一张,那么可以多缓存一张。当然了,加载的过程要开启一个新线程在后台来做。
如果要显示多张,可以考虑HorizontalListView。
解决方案五:
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篇小教程,暑假写的
解决方案六:
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篇小教程,暑假写的