android 缓存过期时间,Android缓存超过有效时间,则重新请求数据

本文介绍了在Android开发中如何实现缓存过期时间的管理。通过设定缓存时间为60分钟,并利用SharedPreferences存储刷新时间,当缓存超过有效时间或者无网络时,程序会重新请求数据。同时,提供了TimeUtil工具类用于计算日期差和获取当前时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、在实际开发中需要固定时间去请求更新下菜单数据,逻辑如下

int chcheTime= 60 * 60;//定义缓存时间

String lastRefreshTime = 这里取出SharedPreferences存储的时间

String currTime = TimeUtil.getCurTimeStr();

long diff=0;

if (lastRefreshTime!=null) {

diff = TimeUtil.calDateDifferent(lastRefreshTime, currTime);

}

//取到本地数据集

List localList = db.getArticleTypeList();

// 缓存超过有效时间,则重新请求数据

if (NetUtil.isNetworkAvailable(getActivity())&&(diff > chcheTime || localList == null ||localList.size() == 0|| sync)) {

//这里请求接口数据,请求成功后需要将时间存到SharedPreferences里头

} else {

//这里填充本地数据,可能取数据库数据

}

二、如果请求接口数据成功

SharedPreferences   保存当前时间  TimeUtil.getCurTimeStr()

三、以下是TimeUtil

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 dateFormater = new ThreadLocal() {

@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;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值