当浮点数为零时停止处理程序自动运行

Stop handler autorun when float hits zero

基本上我有一个处理程序可以在一段时间内自动 运行。这是代码:

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);
}

使用这些代码,处理程序将一直保持 运行,直到我的浮点数变为负值。所以我想知道应该如何修改它,以便其中一个浮点数达到零,然后处理程序将停止 运行ning.

提前致谢。

您的问题是由于

  EventDetail.handler.postDelayed(this, 5000);

这将在 5 秒后安排 另一个 执行 this runnable。如果您不清理处理程序的队列,它将永远发生 。另外,这样你会泄漏 Activity