-1

我想实现一种方法来执行定期更新

  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();

不幸的是,我不知道如何比较nowstartDate解决我的问题,以及这是否是正确的方法。

4

2 回答 2

0

将日期存储在 SharedPreferences 中。当应用程序启动时,加载日期并与当前日期进行比较。

您可以通过调用 getTime() 并进行数学运算从纪元中获取毫秒数来比较两个日历。或者,您可以创建已保存日历对象的克隆,将其向前滚动()按您想要的时间量(7 天、一个月等)并使用 Calendar.compareTo(saved calendar) 进行比较

于 2014-01-29T01:22:12.850 回答
0

取决于你对“一年过去了”的定义是什么。可能是 365 天,可能是您有相同的值日/月字段,而年字段只有 +1。

如果我们假设一年 365 天,您可以使用

if((now.getTimeInMillis() - startDate.getTimeInMillis()) > 31556952000)
    return true;

对于您的“aYearHasPassed”方法,31556952000 是 365 天内的毫秒数。

只是一种给猫剥皮的方法,可能无法满足您的确切要求。

于 2014-01-29T00:35:56.337 回答