每次请求回的Json数据本地用sharedpreference保存

  1 package com.lonshin.chexiaodi.http;
  2 
  3 import java.util.Date;
  4 import java.util.List;
  5 import java.util.Set;
  6 import java.util.Timer;
  7 import java.util.TimerTask;
  8 import java.util.TreeSet;
  9 
 10 import org.apache.http.NameValuePair;
 11 import org.apache.http.message.BasicNameValuePair;
 12 
 13 import com.krislq.sliding.MyApplication;
 14 
 15 import android.content.Context;
 16 import android.content.ContextWrapper;
 17 import android.content.SharedPreferences;
 18 import android.util.Log;
 19 /**
 20  * to check if the local JSONResult exist
 21  * 
 22  * and do the write and read
 23  * @author linsen
 24  *
 25  */
 26 
 27 
 28 public class SPTool { 
 29     SharedPreferences sp;
 30     SharedPreferences.Editor  editor;
 31     
 32     private SPTool(){
 33         sp = MyApplication.getInstance().getSharedPreferences("Result", Context.MODE_WORLD_READABLE);                
 34         editor = sp.edit();
 35         
 36         
 37     }
 38     
 39     private static SPTool instance = new SPTool(){};
 40     
 41     public static SPTool getInstance(){
 42         return instance;
 43     }
 44     /**
 45      * 判断是否有本地json 而且是没过期的
 46      * 
 47      * @return
 48      */
 49     public boolean hasSDResult(List<NameValuePair> params){ 
 50 //        Log.d("httplocal-in Sdjr",String.valueOf(sp.contains(params.toString())));
 51         long oldT = 0;
 52         long newT = 0;
 53         
 54         //取得保存的String当时的时间oldT
 55         if(sp.contains(params.toString())){
 56             String s = sp.getString(params.toString(), null);
 57             if(s.contains("#")){
 58                 String[] str = s.split("#");            
 59                 oldT = Long.parseLong(str[0]);    
 60                 newT = new Date().getTime();
 61             }
 62         }
 63         
 64         //设置过期时间为1小时---若测试用则设为3秒
 65         if(((newT-oldT)<5000)&&((newT-oldT)>0)){
 66             return true;
 67         }else{
 68             editor.remove(params.toString());
 69             return false;
 70         }
 71 
 72         
 73     }
 74     
 75     /**
 76      * 访问结果访问到本地
 77      * @param params
 78      * @param result
 79      */
 80     public void saveToSD(List<NameValuePair> params , String result){
 81         
 82         //在保存的String中增加一个time及符号"#"
 83         String time = String.valueOf(new Date().getTime());
 84         String result01 = time+"#"+result;
 85         editor.putString(params.toString(), result01);
 86         editor.commit();
 87         Log.d("httplocal-in Sdjr","saveToSD"+params.toString());
 88     }
 89     
 90     /**
 91      * 获取本地保存的访问结果
 92      * @param params
 93      * @return
 94      */
 95     public String getSDResult(List<NameValuePair> params){        
 96         Log.d("httplocal" , "getSDResult");
 97         String s = sp.getString(params.toString(), null);
 98         
 99         //取得数据时,去掉附加的time信息
100         if(s.contains("#")){
101             String[] str = s.split("#");
102             
103             return str[1]; 
104         }else{
105             return s;
106         }        
107     }    
108 }

 

posted @ 2013-05-06 09:36  linsen@java  阅读(602)  评论(0编辑  收藏  举报