我需要在不同的时间安排2个任务

时间:2016-10-19 08:52:31

标签: android date scheduled-tasks timertask

我尝试安排2项任务,首先需要每天完成 - 检查生日, 第二项任务只有在今天是本月的第一天才需要......

我试图制定1个日程安排,每天早上8点完成,当它完成时检查它是否是一个月的第一天。

如果它的真实性是第二个任务的方法。

我的问题是每次onCreate()完成时都会启动该方法。这是一个月的第一天,所以如果我在1/10/16打开应用程序10次,该方法将发生10次,而不是1次。

我的代码:

的onCreate()

startTimers();

startTimers方法:

    private void startTimers() {

    d = new Date();
    d.setTime(System.currentTimeMillis());
    d.setHours(8);
    d.setMinutes(0);
    d.setSeconds(0);

    timer = new Timer();
    timerTask = new TimerTask() {
        @Override
        public void run() {

            if(d.getDate() == 1){
                // TODO: 19/10/2016 find good if that will make it work only 1 time per month..
                saveSalariesBeforeStartNewMonth();
                resetSumOfMinutes();
                Log.d("TAG","Started new Month good luck!@#!@");
            }
            checkBirthdays();
        }
    };

    timer.schedule(timerTask,d.getTime(),1000*60*60*24);//every day at 8:00 at morining..
}

感谢助手。

1 个答案:

答案 0 :(得分:0)

尝试在成功调度后将一个简单的布尔值存储到SharedPreferences,以便在调用startTimers()之前只需检查存储的值。就像:

public void onCreate(){
  if (!isScheduledAlready()) {
     startTimers();
  }
}

public boolean isScheduledAlready(){
    SharedPreferences prefs = getPrefs().getPreferences();
    return prefs.getBoolean("schedule_keys", false);
}

public void setSchedule(boolean scheduled) {
    SharedPreferences prefs = getPrefs().getPreferences();
    prefs.edit().putBoolean("schedule_keys", scheduled).apply();
}

此外,我不确定在您的情况下,您可能希望在月份更改时调整值吗?如果那时你我可以只需要添加更多条件。