oschina的android客户端是如何保存缓存数据的

michaelye 发布于 2012/09/12 09:23
阅读 9K+
收藏 8

@迷途d书童 你好,想跟你请教个问题:OsChina的android客户端是如何保存缓存数据的?打开软件的时候能够加载上一次的数据,这点我觉得很不错。不知道是如何做的,在代码中没有看到你使用了数据库,在sd卡中也没有看到文件的写入,还是我没有找到?能否指点一下?

加载中
0
迷途d书童
迷途d书童
缓存没有写到sd卡上,写到手机内存的/data/data/net.oschina.app/files/目录下了。
我是从网络中读取并解析数据后做了存储,代码写在AppContext类里:
/**
 * 新闻列表
 * @param catalog
 * @param pageIndex
 * @param pageSize
 * @return
 * @throws ApiException
 */
public NewsList getNewsList(int catalog, int pageIndex, boolean isRefresh) throws AppException {
	NewsList list = null;
	String key = "newslist_"+catalog+"_"+pageIndex+"_"+PAGE_SIZE;
	if(isNetworkConnected() && (!isReadDataCache(key) || isRefresh)) {
		try{
			list = ApiClient.getNewsList(this, catalog, pageIndex, PAGE_SIZE);
			if(list != null && pageIndex == 0){
				Notice notice = list.getNotice();
				list.setNotice(null);
				list.setCacheKey(key);
				saveObject(list, key);
				list.setNotice(notice);
			}
		}catch(AppException e){
			list = (NewsList)readObject(key);
			if(list == null)
				throw e;
		}		
	} else {
		list = (NewsList)readObject(key);
		if(list == null)
			list = new NewsList();
	}
	return list;
}

比如上面这个获取新闻列表的方法,ApiClient.getNewsList()得到的列表不为空,就执行saveObject(list, key);保存缓存。


0
michaelye
michaelye
非常感谢您能够这么及时的回复我!我找到了。不得不说您的这个客户端做的很不错,代码的结构很清晰,能够开源真的很棒,给了我一个难得的学习机会,谢谢~~
晰清
晰清
能给一个这个客户端的源码吗?学习一下
0
sunyh
sunyh

感觉 oschinaapp   android的

很消耗流量

看了不到半个小时 就消耗了 15M  小弟才 30M包月啊。

 

大概缓存 太多。  图片之类的。

迷途d书童
迷途d书童
你可以去系统设置里设置 不加载图片的。
michaelye
michaelye
这个我倒没有在意过。用的公司的wifi。每次加载都是从新获取一次数据,本地并没有对图片进行缓存,每次加载数据后就直接替换之前的数据。图片比较耗费流量。不知道我说的对不对。
0
陈东人
android 缓存的新闻。如果服务器删除了怎么办。现在看的不都是没用的信息啊。
0
c
czn
你好,我想问的是缓存的时候,只看到pageIndex==0的情况下,存进去,但是pageIndex==1,2,3怎么没有看到呢?
0
c
czn

引用来自“czn”的答案

你好,我想问的是缓存的时候,只看到pageIndex==0的情况下,存进去,但是pageIndex==1,2,3怎么没有看到呢?
没有 pageIndex==1,2,3...的写入,你后来的读取是从哪儿读的呢?
0
顾恩礼
顾恩礼
非常好,受益了!
返回顶部
顶部