• 每次请求回的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 }
  • 相关阅读:
    UML中常用的类图元素介绍
    灵魂架构师论坛 正在崛起
    什么是模式,什么是框架
    RPG Maker XP
    php常用HEADER头记录
    PHP MYSQLI扩展库面向对象编程 数据库连接 例子
    PHP 通过MYSQL扩展库 连接MYSQL例子
    MYSQL 数据库相关操作总结
    MYSQL 客户端控制台 中文乱码
    PHP 安全编程慢慢总结
  • 原文地址:https://www.cnblogs.com/linxiaojiang/p/3062232.html
Copyright © 2020-2023  润新知