我编辑的代码。这里的时间间隔是存储所需延迟和索引初始化为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);现在它的工作正常。
等待你是一个有点困惑,指数和k不声明,你不需要removeCallBacks e .... timer.cancel!??!请从我的答案 – appersiano
的代码开始,我发现了错误,并已纠正它。谢谢,你是一个很好的帮助 –