|
今天为“至简天气”增加了一项功能:在启动时根据上次更新数据的时间判断是否有必要更新数据,因为 weather.com.cn 的实况数据貌似是25分钟才会刷新一次,只有在据上次更新的时间达25分钟以上才会自动更新数据,计算时间差的方法如下:
private boolean isNeedToRefresh(){
//获取当前时间
Date curDate = new Date(System.currentTimeMillis());
//getLastRefreshTime() 从xml文件中读取上次更新数据的时间(long)
long lastRefreshTime=getLastRefreshTime();
long diff=curDate.getTime()-lastRefreshTime;
//getTime() 得到的是以毫秒为单位的long数据
//除以1000*60转化为以分钟为单位
diff=diff/(1000*60);
return diff>=25;//如果间隔大于等于25分钟则自动刷新
} 我在做计算的时候只需要用到分钟单位,因此只是对时间除以1000*60,同理也可以对diff处理转化为小时、天单位的数据。
getLastRefreshTime() 的实现如下:
private long getLastRefreshTime(){
String spName = getPackageName() + "_preferences";
SharedPreferences sp = getSharedPreferences(spName, MODE_PRIVATE);/*
return Long.parseLong(sp.getString("LAST_REFRESH_TIME_LONG","1414053790410"));*/
return sp.getLong("LAST_REFRESH_TIME_LONG",1414053790410L);
} 另外,我还在更新数据成功之后执行
updateRefreshTime() 来更新保存于xml中的时间数据,在此不再赘述。
|