Я хотел бы начать задание в определенное время.Для этого я использую runnable
и postDelayed
метод следующим образом:
private Runnable mLaunchTask = new Runnable() {
public void run() {
try {
MY TASK
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
};
В моем коде я использую mLunchTask
следующим образом:
mHandler = new Handler();
mHandler.postDelayed(mLaunchTask, myDelay*1000);
и вычисляется myDelay
следующим образом:
s = DateFormat.format("hh:mm:ss aaa", d.getTime());
cTime = s.toString(); // current Time
ch = Integer.parseInt(cTime.substring(0,2)); // current hour
cm = Integer.parseInt(cTime.substring(3,5)); // current minute
cs = Integer.parseInt(cTime.substring(6,8)); // current second
if (cTime.substring(9,11).equalsIgnoreCase("pm") && (ch<12) ) ch = ch+12;
myDelay=(desiredHour-ch)*3600+(desiredMinute-cm)*60 - cs;
if (myDelay<0) myDelay = 0;
и desiredHour
и desiredMinute
устанавливаются пользователем.Ожидается, что MY TASK
начинается с desiredHour
и desiredMinute
и 0 секунд.Однако «МОЯ ЗАДАЧА начинается с задержкой в несколько секунд, которая выглядит случайной.
Исходя из вышеприведенного кода, есть ли какая-либо причина, по которой он не запускается в нужное время?
Спасибо