Мой отредактированный код. Этот интервал - это вектор, в котором хранятся требуемые задержки, а индекс инициализируется значением 0. Я получил свою ошибку. Это то, что у меня есть.Нужно реализовать таймер (с характером переменных временных интервалов) в приложении для Android.
public class MainActivity{
private int index;
//Some code and initializations
public void startTimer{
index=0;
private Timer timer=new Timer();
private TimerTask timertask=new MyTimerTask();
// timer.schedule(timertask,0,1000); //This line was causing trouble
}
private class MyTimerTask extends TimerTask
{
public void run() {
handler.postDelayed(new Runnable() {
int limit = interval.size();
@Override
public void run() {
if (index < limit) {
Integer secondDelay = interval.get(k);
Log.e(TAG, "index= " + index + " interval= " + secondDelay + " seconds");
//Some code
long delay = secondDelay * 1000;
index++;
handler.postDelayed(this, delay);
} else {
handler.removeCallbacksAndMessages(null); //Cancelling the handler.postDelayed
Log.e(TAG, "Cancelling timer");
timer.cancel();
}
}
}, 0);
}
}
}
Выход в журнал осуществляется через каждые 1 секунду.
Прокомментированная строка вызывает ошибку. Должно быть timer.schedule (timertask, 0); и теперь он работает правильно.
Подождите, вы немного запутался, индекс и к не объявлены, и вам не нужно удалитьCallBacks e .... timer.cancel! ??! Пожалуйста, начните с кода моего ответа – appersiano
Я узнал об ошибке и исправил ее. Спасибо, вы очень помогли –