最後に、試行錯誤の末、思い通りに動作させることができました。
しかし、コードをより読みやすくシンプルにするためのアドバイスをお願いします。必要なものをアーカイブするために多くの不要なコードが作成されたようです。
これが基本的に行うことは、スケジュール タスクを実行する必要があるときにサーバー アプリをオンにすると、タスクが開始され、開始されるべき時間からの残りの時間だけ実行されます。それ以外の場合は、実行がスケジュールされます実行することになっている時間。
したがって、スケジュール時刻が 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);
ここで私の質問は、上記のコードで何を改善できるかということです。