基本上我有一个处理程序会自动运行一段时间。这是代码:
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 变为负值。所以我想知道应该如何修改它,以便其中一个 float 达到零,然后处理程序将停止运行。
提前致谢。
最佳答案
你的问题是由于
EventDetail.handler.postDelayed(this, 5000);
这将在 5 秒后安排 另一个 执行 this
runnable。如果您不清理处理程序的队列,它将永远发生。另外,这样你会泄露 Activity
关于java - 当 float 为零时停止处理程序自动运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28020424/