我想实现一种执行定期更新的方法
public void periodicUpdate(int frequence){
//frequence 1 daily, 2 monthly, 3 yearly
switch(frequence){
case 1:
if(aDayIsExpired()){
update();
}
break;
case 2:
if(aMontyhIsExpired()){
update();
}
break;
...
}
default:
if(aYearIsExpired()){
update();
}
break;
...
}
但我不知道如何计算一天,一个月和一年到期。 我需要像
这样的东西 GregorianCalendar startDate = new GregorianCalendar();
存储,每次应用程序启动时我应该与
进行比较GregorianCalendar now = new GregorianCalendar();
不幸的是,我不知道如何比较now
和startDate
来解决我的问题,如果这是正确的方法。
答案 0 :(得分:0)
取决于您对“一年过去”的定义是什么。它可能是365天,可能是您拥有相同值的日/月字段,而年度字段中只有+1。
如果我们假设一年365天,您可以使用
if((now.getTimeInMillis() - startDate.getTimeInMillis()) > 31556952000)
return true;
表示“aYearHasPassed”方法,31556952000是365天内的毫秒数。
只有一种方法可以给猫皮肤,可能不符合你的确切要求。
答案 1 :(得分:0)
将日期存储在SharedPreferences中。应用程序启动时,加载日期并与当前日期进行比较。
您可以通过调用getTime()并进行数学运算来获取纪元的毫秒数来比较两个日历。或者,您可以创建已保存日历对象的克隆,按所需的时间(7天,一个月等)向前滚动(),并使用Calendar.compareTo(已保存的日历)比较它们