文档章节

File缓存的进级实践

新根
 新根
发布于 2016/01/28 17:56
字数 228
阅读 68
收藏 4

将数据缓存到file中,便于下次恢复数据,或者预先加载。

Cache管理类: ObjectOutputStream及Serializable 的api,,自行查看 java文档

public class CacheManager {

public static CacheManager mInstance;

static {
	mInstance = new CacheManager();  //单例
}
private CacheManager() {
}
public <T> T readCacheFile(Context context, T t, String fileName) {
	ObjectInputStream in = null;
	try {
		File file = new File(context.getCacheDir(), fileName);
		if (!file.exists()) {
			return null;
		}
                                           //下步操作,也可以用android 中context对象来获取 流
		FileInputStream file_in = new FileInputStream(file);
		in = new ObjectInputStream(file_in);
		t = (T) in.readObject();
		return t;
	} catch (Exception e) {
		e.printStackTrace();
		return null;
	} finally {
		if (in != null) {
			try {
				in.close();
			} catch (Exception e2) {
				e2.printStackTrace();
			}

		}
	}

}

/*
 * mClass 必须实现Serializable ObjectOutputStream 用于序列号对象
 */
public <T> void writeCacheFile(Context context, T mClass, String fileName) {

	ObjectOutputStream out = null;
	try {
		File file = new File(context.getCacheDir(), fileName);
		if (file.exists()) {
			file.delete();
		}
		file.createNewFile();
		FileOutputStream file_out = new FileOutputStream(file);
		out = new ObjectOutputStream(file_out);
		out.writeObject(mClass);
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		if (out != null) {
			try {
				out.close();
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}
	}
}

}

注意点:单例操作类中不要传入Actiivty的引用,以免造成activity回收不了,最好传入applicationcontext

© 著作权归作者所有

新根
粉丝 5
博文 28
码字总数 9431
作品 0
深圳
程序员
私信 提问
速写几点linux方面的感悟

晚饭后看了remap_file_pages,这个函数主要就是将一个文件的任何位置映射进任何一个vma(稍微有点限制)的任何地方,man手册上说的很清楚: The remap_file_pages() system call is used to ...

晨曦之光
2012/04/10
116
0
PHP高效文件缓存类FCache

自己用的阿里云低配置,最近访问不错,经常出现mysql崩溃的问题,提单说请加内存,这回复还不如直接说:请交钱! 于是自己在git找了php的文件缓存,发现都是将缓存放到一个缓存文件!!!意味...

小薇
2014/11/27
0
4
MyBatis之缓存Cache

MyBatis的一级缓存即session级缓存,这个只存在于session域中,如果session调用了clearCache或close方法的话,缓存就会被清空 package com.test; import org.apache.ibatis.session.SqlSession;...

骑着毛驴来编程
2016/07/14
53
2
架构技术实践系列文章

架构技术实践系列文章: 长虹李玮:老牌消费电子企业如何拥抱Docker 徐汉彬:日请求过亿的Web系统PHP7升级实践 窦威:AcFun的视频架构演化实践 傅鸿城:QQ亿级日活跃业务后台核心技术揭秘 宁...

cccyb
2016/06/16
14
0
drupal下启用缓存和Gzip压缩传输

据说drupal7会提供Gzip压缩功能,可惜至少在目前drupal6.x的时代,我还享受不到这个功能.需要我们自己做. Gzip现今已经成为Internet 上使用非常普遍的一种数据压缩格式,或者说一种文件格式。...

vito-chen
2012/07/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【AI实战】手把手教你深度学习文字识别(文字检测篇:基于MSER, CTPN, SegLink, EAST等方法)

文字检测是文字识别过程中的一个非常重要的环节,文字检测的主要目标是将图片中的文字区域位置检测出来,以便于进行后面的文字识别,只有找到了文本所在区域,才能对其内容进行识别。 文字检...

雪饼
今天
7
0
思维导图XMind 8 Pro 绿化方法(附序列号)

按部就班: Step 1 -全新下载最新版本的 Xmind 8(注必须是英文官方的版本,中文代{过}{滤}理网站的版本修改过,无法使用pj); Step 2 -安装完毕后,点击文末的下载按钮下载pj补丁文件包,将...

一只小青蛙
今天
10
0
数据结构(ER数据库)设计规范

表命名规范 表命名的规则分为3个层级,层级之间通过_分割,例如b_r_identity、d_l_identity。规约为: [leavel]_[type]_[name] [leavel] 表示数据库表的层级和功能,分为: s:业务无关的系统...

随风溜达的向日葵
今天
6
0
阿里Sentinel控制台源码修改-对接Apollo规则持久化

https://github.com/alibaba/Sentinel/wiki/%E5%9C%A8%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%BF%E7%94%A8-Sentinel 动态规则扩展 https://github.com/alibaba/Sentinel/wiki......

jxlgzwh
昨天
8
0
在Linux系统中创建SSH服务器别名

如果你经常通过 SSH 访问许多不同的远程系统,这个技巧将为你节省一些时间。你可以通过 SSH 为频繁访问的系统创建 SSH 别名,这样你就不必记住所有不同的用户名、主机名、SSH 端口号和 IP 地...

老孟的Linux私房菜
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部