基本上我有一个自动运行一段时间的处理程序。这是代码:
long time = 0;
for (int iii = 0; iii < GetEventDirectionAsyncTask.directionList.size(); iii++) {
final int counter = iii;
time += 1000;
EventDetail.handler.postDelayed(new Runnable() {
public void run() {
EventDetail.handler.postDelayed(this, 5000);
EventMain.tvDirection.setText(GetEventDirectionAsyncTask.directionList.get(counter));
float timeLeft = Float.parseFloat(EventMain.tvTimeLeft.getText().toString()) - Float.parseFloat(GetEventDirectionAsyncTask.timeLeftList.get(counter));
EventMain.tvTimeLeft.setText(String.valueOf(timeLeft));
float distanceLeft = Float.parseFloat(EventMain.tvDistLeft.getText().toString()) - Float.parseFloat(GetEventDirectionAsyncTask.distLeftList.get(counter));
EventMain.tvDistLeft.setText(String.valueOf(distanceLeft));
}
}, time);
}
使用这些代码,处理程序将一直运行,直到我的float变为负值。所以我想知道应该如何修改它以使其中任何一个浮点击零,然后处理程序将停止运行。
提前致谢。
答案 0 :(得分:1)
你的问题是由于
EventDetail.handler.postDelayed(this, 5000);
将在5秒后安排另一次执行this
runnable。如果你不清理处理程序的队列,它将永远发生永远。另外,这样你就会泄漏Activity