博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
搞了一天,用SharedPreference 实现网络请求的JSON数据的本地存储
阅读量:5076 次
发布时间:2019-06-12

本文共 2117 字,大约阅读时间需要 7 分钟。

package com.lonshin.chexiaodi.http;

import java.util.Date;

import java.util.List;
import java.util.Set;
import java.util.Timer;
import java.util.TimerTask;
import java.util.TreeSet;

import org.apache.http.NameValuePair;

import org.apache.http.message.BasicNameValuePair;

import com.krislq.sliding.MyApplication;

import android.content.Context;

import android.content.ContextWrapper;
import android.content.SharedPreferences;
import android.util.Log;
/**
* to check if the local JSONResult exist
*
* and do the write and read
* @author linsen
*
*/

public class SPTool {
SharedPreferences sp;
SharedPreferences.Editor editor;
private SPTool(){
sp = MyApplication.getInstance().getSharedPreferences("Result", Context.MODE_WORLD_READABLE);
editor = sp.edit();
}
private static SPTool instance = new SPTool(){};
public static SPTool getInstance(){
return instance;
}
/**
* 判断是否有本地json 而且是没过期的
*
* @return
*/
public boolean hasSDResult(List<NameValuePair> params){
// Log.d("httplocal-in Sdjr",String.valueOf(sp.contains(params.toString())));
long oldT = 0;
long newT = 0;
//取得保存的String当时的时间oldT
if(sp.contains(params.toString())){
String s = sp.getString(params.toString(), null);
if(s.contains("#")){
String[] str = s.split("#");
oldT = Long.parseLong(str[0]);
newT = new Date().getTime();
}
}
//设置过期时间为1小时---若测试用则设为3秒
if(((newT-oldT)<5000)&&((newT-oldT)>0)){
return true;
}else{
return false;
}

}
/**
* 访问结果访问到本地
* @param params
* @param result
*/
public void saveToSD(List<NameValuePair> params , String result){
//在保存的String中增加一个time及符号"#"
String time = String.valueOf(new Date().getTime());
String result01 = time+"#"+result;
editor.putString(params.toString(), result01);
editor.commit();
Log.d("httplocal-in Sdjr","saveToSD"+params.toString());
}
/**
* 获取本地保存的访问结果
* @param params
* @return
*/
public String getSDResult(List<NameValuePair> params){
Log.d("httplocal" , "getSDResult");
String s = sp.getString(params.toString(), null);
//取得数据时,去掉附加的time信息
if(s.contains("#")){
String[] str = s.split("#");
return str[1];
}else{
return s;
}
}

}

转载于:https://www.cnblogs.com/linxiaojiang/archive/2013/05/04/3059729.html

你可能感兴趣的文章
编写一个函数isMerge,判断一个字符串str是否可以由其他两个字符串part1和part2“组合”而成...
查看>>
NYOJ-613//HDU-1176-免费馅饼,数字三角形的兄弟~~
查看>>
graphite custom functions
查看>>
一个自己写的判断2个相同对象的属性值差异的工具类
查看>>
oracle连接的三个配置文件(转)
查看>>
Python内置函数(29)——help
查看>>
Android TextView加上阴影效果
查看>>
《梦断代码》读书笔记(三)
查看>>
Java8 Lambda表达应用 -- 单线程游戏server+异步数据库操作
查看>>
AngularJS学习篇(一)
查看>>
关于Xshell无法连接centos6.4的问题
查看>>
spring security 11种过滤器介绍
查看>>
代码实现导航栏分割线
查看>>
大数据学习系列(8)-- WordCount+Block+Split+Shuffle+Map+Reduce技术详解
查看>>
luogu4849 寻找宝藏 (cdq分治+dp)
查看>>
关于源程序到可运行程序的过程
查看>>
C# Async与Await的使用
查看>>
Mysql性能调优
查看>>
iOS基础-UIKit框架-多控制器管理-实例:qq界面框架
查看>>
自定义tabbar(纯代码)
查看>>