Android緩存超過有效時間,則從新請求數據

1、在實際開發中須要固定時間去請求更新下菜單數據,邏輯以下java

        int chcheTime= 60 * 60;//定義緩存時間
        String lastRefreshTime = 這裏取出SharedPreferences存儲的時間
        String currTime = TimeUtil.getCurTimeStr();
        long diff=0;
        if (lastRefreshTime!=null) {
         diff = TimeUtil.calDateDifferent(lastRefreshTime, currTime);
        }
        //取到本地數據集
        List<ArticleType> localList = db.getArticleTypeList();
        // 緩存超過有效時間,則從新請求數據
        if (NetUtil.isNetworkAvailable(getActivity())&&(diff > chcheTime || localList == null ||localList.size() == 0|| sync)) {
            //這裏請求接口數據,請求成功後須要將時間存到SharedPreferences裏頭
        } else {
            //這裏填充本地數據,可能取數據庫數據
        }

2、若是請求接口數據成功數據庫

SharedPreferences   保存當前時間  TimeUtil.getCurTimeStr()緩存

3、如下是TimeUtilide

public class TimeUtil {
    /**
     * 格式:年-月-日 小時:分鐘:秒
     */
    public static final String FORMAT_ONE = "yyyy-MM-dd HH:mm:ss";
    /**
     * 默認formater yyyy-MM-dd HH:mm:ss
     */
    public static final SimpleDateFormat TIMEFORMAT = new SimpleDateFormat(
            "yyyy-MM-dd HH:mm:ss", Locale.getDefault());
    private final static ThreadLocal<SimpleDateFormat> dateFormater = new ThreadLocal<SimpleDateFormat>() {
        @Override
        protected SimpleDateFormat initialValue() {
            return new SimpleDateFormat(FORMAT_ONE);
        }
    };

    /***
     * 計算兩個時間差,返回的是的秒s
     * 
     * @author qxian 2016-5-25下午23:50:06
     * 
     * @return long
     * @param dete1
     * @param date2
     * @return
     */
    public static long calDateDifferent(String dete1, String date2) {

        long diff = 0;

        Date d1 = null;
        Date d2 = null;

        try {
            d1 = dateFormater.get().parse(dete1);
            d2 = dateFormater.get().parse(date2);

            // 毫秒ms
            diff = d2.getTime() - d1.getTime();

        } catch (Exception e) {
            e.printStackTrace();
        }

        return diff / 1000;
    }

    public static String getCurTimeStr() {
        Calendar cal = Calendar.getInstance();
        String curDate = dateFormater.get().format(cal.getTime());
        return curDate;
    }
}
相關文章
相關標籤/搜索