最后经过一些试验和错误,我设法让它按我的意愿工作。
但是现在我希望您的建议是使代码更具可读性和简单性,似乎制作了很多不必要的代码来归档我想要的东西。
这基本上做的是,如果您在计划任务应该运行的时间打开服务器应用程序,它将启动该任务并让它在它应该开始的剩余时间内运行,否则它将被安排在它应该运行的小时。
因此,如果计划时间是 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);
所以我现在的问题是我可以对上面的代码进行哪些改进?