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

问题描述

关于加载多量数据的问题,如何优化。求指点迷津
列如,我的一个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篇小教程,暑假写的

时间: 2024-08-19 10:56:08

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

ztree+java异步加载树形菜单例子

本篇给大家分享一下 ztree+java异步加载demo.ztree支持加载数据量可以做大,预计一个页面5000+都是可以的. Ztree异步加载的意思就是: 当点击展开树节点时,才去请求后台action返回点击节点的子节点数据并加载. 本demo采用SpringMvc+Mybatis.参见代码结构图: 前台代码jsp:  代码如下 复制代码 <%@ page language="java" import="java.util.*" pageEncoding=

listview-安卓ListView加载大量网络数据时卡

问题描述 安卓ListView加载大量网络数据时卡 最近小弟在做一个导购类项目,用到ListView控件,要在ListView中加载大量图片和文字,现在的问题是,ListView中的Button在点击时要改变Button上的文字,此时要等待好长时间(大概2-3秒),才能将改变后的文字显示出来.Log显示,每次点击,getView方法都要调用4次,而且每次点击都要从第一条到点击的条数依次寻找position.由于数据量大,条数多,因此条数越往后,等待的时间越长,不知道各位大神有什么好的解决方案,本

java class加载机制及对象生成机制

java class加载机制及对象生成机制 当使用到某个类,但该类还未初始化,未加载到内存中时会经历类加载.链接.初始化三个步骤完成类的初始化.需要注意的是类的初始化和链接的顺序有可能是互换的. ClassLoader加载机制 ClassLoader用于动态加载class文件到内存中. Java 提供了三个ClassLoader: 启动类加载器(BootStrap ClassLoader):java类加载器中最顶层的类加载器,负责加载jdk中核心的类库,如:rt.jar.resources.ja

iOS:使用UITableView 创建表格应用演练(2) 从plist文件加载并显示数据

上文中介绍了一个非常简单的表格加载和显示的演练.有的朋友可能会说,这也说的忒简单了,能不能来点复杂的? 别着急,做为程序员,要记住:无论多么复杂的应用都是由简单的应用演化而成的. 本文目标 本文以上一篇为基础,对应用进行扩展,介绍以下内容: 1. 数据结构定义: 2. 从plist文件加载并显示数据: 3. 在表格中显示头像并调整表格样式: 4. 使用数据模型. 一. 数据结构定义 在上一篇演练中,使用NSArray定义了一个数组提供表格内容,但是在实际应用中,这种功能远远不能满足实际使用需求.

关于java中加载和初始化的疑问?各位帮忙分析下

问题描述 关于java中加载和初始化的疑问?各位帮忙分析下 public class ExA { private static ExA a = new ExA(); static { System.out.println("父类--静态代码块"); } public ExA() { System.out.println("父类--构造函数"); } { System.out.println("父类--非静态代码块"); } public stat

ios-IOS&amp;amp;amp;Android开发:如何从大量未加载的数据中加载一定量的数据到列表中

问题描述 IOS&Android开发:如何从大量未加载的数据中加载一定量的数据到列表中 绝大多数新闻资讯类应用开发过程中都会遇到这么一个问题: 规定每次从服务器最多只能获取20条数据,第一次刷新获取了20条最新的数据,添加到列表中,过一段时间有了30条未刷新的记录,这下问题来了:第二次刷新时是获取最新的20条还是接着第一次获取之后的20条数据放在列表前面?前者会导致列表中间空缺一部分数据,后者问题是要多刷新几次才能把所有数据获取到. 有过相关开发经验的大神们来说说你们的解决方案. 解决方案 刷新

java运行提示:无法加载主类,觉得程序没错,求指导!!!

问题描述 java运行提示:无法加载主类,觉得程序没错,求指导!!! package 基本语句; public interface 接口 { int a=1; int b=2; int c=3; int d=4; int f=5; void print(); void print1();}class jiekou implements 接口{ public void print() { System.out.println(a+b); } public void print1() { Syste

java jni加载dll文件异常

问题描述 java jni加载dll文件异常 Can't load this .dll (machine code=0x101) on a AMD 64-bit platform 解决方案 32位,64位兼容性的问题吧,, 解决方案二: 可能是32位和64位的兼容问题

数据加载后保存数据到另外数据表中急急急急急急急急急急急急急急

问题描述 数据加载后保存数据到另外数据表中急急急急急急急急急急急急急急 datagrid容器 数据加载后保存到另一个数据库表 sqlite数据库中加载一组数据到datagrid中. 现在把数据保存到sql server 数据库中. 解决方案 Dim Con As New ADODB.Connection '定义ADO对象 Dim rs As New ADODB.Recordset Con.ConnectionString = "driver=SQL Server;server=192.168.1