android用存到缓存的方法来保存ListView里的数据

对于这样的数据:

<?xml version="1.0" encoding="utf-8" ?>
<rss><sid>77f265bb46de068e78f35afbadec62af</sid><count>3</count><control>0</control>
<mblog><uid>1195224593</uid><favid>3436952795</favid><mblogid>5xtaJR</mblogid><mblogidnum>3436952795</mblogidnum><mblogtype>0</mblogtype><mlevel>0</mlevel><feedid>5xtaJR</feedid><nick>马艳丽</nick><portrait>http://tp2.sinaimg.cn/1195224593/50/5614100014/0</portrait><vip>1</vip><vipsubtype>0</vipsubtype><member_type>13</member_type><remark></remark><level>2</level><rtnum>11</rtnum><commentnum>25</commentnum><attitudenum>0</attitudenum><attitudeid>0</attitudeid><attitudes_status>0</attitudes_status><attitudes_count>0</attitudes_count><mblogtypename></mblogtypename><visible><type>0</type><list_id>0</list_id></visible><content>婚礼在北海美丽的北海公园举行…好美好浪漫的地方… </content><pic>http://ss12.sinaimg.cn/wap240/473dae11494344debfc5b</pic><time>1288852274</time><source>彩信</source></mblog></rss>

首先我们把从服务器取到的数据,里面有个主要的对象mblog,我们用一个对象来存储:

public class MBlog implements <strong>Serializable</strong> {  //保证这个对象是可以序列化的
	private static final long serialVersionUID = -3514924369786543050L;
	public String uid;
	public String favid;
	public String mblogid;
	public String nick;
	public String portrait;
	public boolean vip;
	public String content;
	public String rtrootuid;
	public String rtrootid;
	public String rtrootnick;
	public boolean rtrootvip;
	public String rtreason;
	public int rtnum;
	public int commentnum;
	public Date time;
	public String pic;
	public String src;
	public String longitude;// 经度
	public String latitude;// 纬度

	public boolean equals(Object o) {
		if (o == null) return false;
		if (o == this) return true;
		Class<?> cla = o.getClass();
		if (cla == getClass()) {
			MBlog other = (MBlog) o;
			if (other.mblogid.equals(mblogid)) return true;
		}
		return false;
	}

	public int hashCode() {
		return mblogid.hashCode() * 101 >> 12;
	}

}

在Activity取到缓存的Path:  mCacheDir = this.getCacheDir().getPath();

一般是/data/data/com.example.weibotest/cache

这个是save方法:

	public static void save(Object obj, String path) {
		try {
			File f = new File(path);
			/*if(f != null){
				f.mkdirs();
				f.createNewFile();
			}*/
			FileOutputStream fos = new FileOutputStream(f);
			ObjectOutputStream oos = new ObjectOutputStream(fos);
			oos.writeObject(obj);
			oos.flush();
			oos.close();
		}
		catch (IOException e) {
		}
	}

读取方法:

	public static Object load(String path) {
		Object obj = null;
		File file = new File(path);
		try {
			/*if(file != null){
				file.mkdirs();
			}*/
			if (file.exists()) {
				FileInputStream fis = new FileInputStream(file);
				ObjectInputStream ois = new ObjectInputStream(fis);
				try {
					obj = ois.readObject();
				}
				catch (ClassNotFoundException e) {
				}
				ois.close();
			}
		}catch (IOException e) {
			}
		return obj;
	}

这样来调用:

public void parseAssertData() {
		InputStream is = null;
		try {
			is = this.getAssets().open("11.xml", Context.MODE_PRIVATE);
			int length = is.available();
			byte[] buffer = new byte[length];
			is.read(buffer);
			String temp = new String(buffer);

			try {
				Object[] array = ParseData.getMBlogList(temp);
				List<MBlog> list = (List<MBlog>)array[1];
				FileUtils.save(list, mCacheDir+'/'+"001_fav");

				List<MBlog> list1 = (List<MBlog>)FileUtils.load(mCacheDir+'/'+"001_fav");
				MBlog blog = list1.get(1);
				System.out.println("===size="+blog.src);
			} catch (Exception e) {
				e.printStackTrace();
			}

		} catch (IOException ex) {
			ex.printStackTrace();
		}
	}

android用存到缓存的方法来保存ListView里的数据

时间: 2024-08-10 11:14:52

android用存到缓存的方法来保存ListView里的数据的相关文章

Android -- ImageLoader本地缓存

传送门 <Android -- ImageLoader简析>  http://www.cnblogs.com/yydcdut/p/4008097.html 本地缓存 在缓存文件时对文件名称的修改提供了两种方式,每一种方式对应了一个Java类 1)  HashCodeFileNameGenerator,该类负责获取文件名称的hashcode然后转换成字符串. 2)  Md5FileNameGenerator,该类把源文件的名称同过md5加密后保存. 两个类都继承了FileNameGenerato

ASimpleCache(ACache)源码分析(android轻量级开源缓存框架)

转载请注明出处:http://blog.csdn.net/zhoubin1992/article/details/46379055 ASimpleCache框架源码链接 https://github.com/yangfuhai/ASimpleCache 杨神作品,大家最熟悉他的应该是afinal框架吧 官方介绍 ASimpleCache 是一个为android制定的 轻量级的 开源缓存框架.轻量到只有一个java文件(由十几个类精简而来). 1.它可以缓存什么东西? 普通的字符串.JsonObj

手把手教你构建 Android WebView 的缓存机制 &amp; 资源预加载方案

前言 由于H5具备 开发周期短.灵活性好 的特点,所以现在 Android App大多嵌入了 Android Webview 组件进行 Hybrid 开发 但我知道你一定在烦恼 Android Webview 的性能问题,特别突出的是:加载速度慢 & 消耗流量 今天,我将针对 Android Webview 的性能问题,提出一些有效解决方案. 目录 1. Android WebView 存在什么性能问题? Android WebView 里 H5 页面加载速度慢 耗费流量 下面会详细介绍. 1.

android 网络图片双缓存

本文转自:http://blog.csdn.net/a79412906/article/details/10180583 Android每次加载图片很浪费时间.所以设计了一个图片缓存技术来解决每次android手机加载图片的问题 内存的读取速度是最快的,然后是文件的读取速度,最后是网络资源的读取 既然内存的读取时间最快,我们好好利用内存资源.将内存再分两层缓存 强引用缓存不会轻易被回收,来保存常用数据,不常用的资源放入软引用缓存中. 对于硬引用和软引用的介绍: ⑴强引用(StrongRefere

优化Android应用内存的若干方法

原帖地址:http://www.open-open.com/lib/view/open1392013992317.html 在app开发的各个阶段中要考虑RAM的限制问题, 包括在设计阶段(正式开发之前). 使用下面的不同的方法可以达到很好的效果. 当您在设计和开发Android应用时用下面的方法可以使内存运用最高效. 使用保守的Service 如果你的应用需要使用 service在后台执行业务功能, 除非是一直在进行活动的工作(比如每隔几秒向服务器端请求数据之类)否则不要让它一直保持在后台运行

【Java/Android性能优5】 Android ImageCache图片缓存,使用简单,支持预取,支持多种缓存算法,支持不同网络类型,扩展性强

本文转自:http://www.trinea.cn/android/android-imagecache/ 主要介绍一个支持图片自动预取.支持多种缓存算法.支持二级缓存.支持数据保存和恢复的图片缓存的使用.功能及网友反馈的常见问题解答. 与Android LruCache相比主要特性:(1). 使用简单  (2). 轻松获取及预取新图片  (3). 包含二级缓存  (4). 可选择多种缓存算法(FIFO.LIFO.LRU.MRU.LFU.MFU等 13种)或自定义缓存算法  (5). 可方便的保

我的Android 4 学习系列之文件、保存状态和首选项

目录 使用Shared Preference 保留简单的应用程序数据 保存回话间的Activity实例数据 管理应用程序首选项和创建Preference Screen 保存并加载文件以及管理本地文件系统 将静态文件作为外部资源添加 使用Shared Preference 保留简单的应用程序数据 Shared Prefrence 是一种简单的.轻量级的名/值对(NVP)机制,用于保存原始应用程序数据,最常见的是用户的应用程序首选项. Android 中的数据持久化技术为平衡速度.效率和健壮性提供了

[Android Pro] 关于inputStream.available()方法获取文件的总大小

reference to :http://hold-on.iteye.com/blog/1017449 如果用inputStream对象的available()方法获取流中可读取的数据大小,通常我们调用这个函数是在下载文件或者对文件进行其他处理时获取文件的总大小. 以前在我们初学File和inputStream和outputStream时,有需要将文件从一个文件夹复制到另一个文件夹中,这时候我们用的就是inputStream.available()来获取文件的总大小,而且屡试不爽. 但是当我们要

Android轻量缓存框架--ASimpleCache

[转] 大神真面目 稀土掘金,这是一个针对技术开发者的一个应用,你可以在掘金上获取最新最优质的技术干货,不仅仅是Android知识.前端.后端以至于产品和设计都有涉猎,想成为全栈工程师的朋友不要错过! 编辑推荐: 做Android应用开发的同学们相信对“缓存”这个词不陌生,缓存可能有多方面的概念,这里大概列举下程序开发的缓存大概有哪些: 1.服务端控制缓存 如volley请求库,便是通过服务端的“Cache-Control”和“max-age”来告诉客户端有没有缓存以及缓存的时间,也是推荐的使用