Наконец, после некоторых проб и ошибок, мне удалось заставить его работать так, как я хотел.
Но теперь я хотел бы, чтобы вы посоветовали сделать код более читабельным и простым, кажется, он сделал много ненужного кодазаархивировать то, что я хотел.
Что это делает в основном, если вы включаете серверное приложение в то время, когда должно выполняться задание по расписанию, оно запустит задание и позволит ему работать в течение времени, оставшегося послеон должен был начаться в противном случае, он будет запущен по расписанию в час, в который он должен быть запущен.
Так что, если время по расписанию 13:00:00 и должно работать в течение 120 минут, а приложение запускается в 13: 30 он будет работать в течение 90 минут.Если вы запустите его после этого времени, оно будет обычно запланировано на следующий день 13: 00: 00.
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
long start_time = calendar.getTimeInMillis() - System.currentTimeMillis();
if (start_time < 0)
{
long minutes = (start_time*-1) / (60 * 1000);
if (minutes > 0 && minutes < 120)
{
runTimeLeft = 120 - minutes;
ThreadPoolManager.getInstance().schedule(new Runnable()
{
public void run()
{
myTask();
}
}, 0);
}
else
runTimeLeft = 0;
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, hour+24);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
start_time = calendar.getTimeInMillis() - System.currentTimeMillis();
}
ThreadPoolManager.getInstance().scheduleAtFixedRate(new Runnable()
{
public void run()
{
myTask();
}
}, start_time, 24 * 60 * 60 * 1000);
Итак, мой вопрос здесь состоит в том, что я могу улучшить в приведенном выше коде?