我尝试安排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..
}
感谢助手。
答案 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();
}
此外,我不确定在您的情况下,您可能希望在月份更改时调整值吗?如果那时你我可以只需要添加更多条件。