【问题标题】:i need to schedule 2 tasks at diffrent times我需要在不同时间安排 2 个任务
【发布时间】:2017-02-28 19:21:00
【问题描述】:

我尝试安排 2 个任务,第一个需要每天完成 - 检查生日, 仅当今天是该月的第一天时,第二个任务才需要..

我尝试制定一个每天早上 8:00 完成的时间表,并在完成时检查它是否是每月的第一天。

如果它是真的,则制作第二个任务的方法。

我的问题是,该方法在每次 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..
}

感谢帮助。

【问题讨论】:

    标签: android date scheduled-tasks timertask


    【解决方案1】:

    尝试在成功调度后将一个简单的布尔值存储到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();
    }
    

    另外,我不确定在您的情况下您是否想在月份变化时调整该值?如果那时你可以只需要添加更多我猜的更多条件。

    【讨论】:

    • 嘿,我的意思是,当 startTimers 激活计时器时,计时器不工作..我更改了手机上的时间,当我到达上午 8:00 时,没有任何附加内容..
    猜你喜欢
    • 2016-10-10
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    相关资源
    最近更新 更多