当float命中零时停止处理程序自动运行

时间:2015-01-19 08:21:17

标签: java android handler

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

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变为负值。所以我想知道应该如何修改它以使其中任何一个浮点击零,然后处理程序将停止运行。

提前致谢。

1 个答案:

答案 0 :(得分:1)

你的问题是由于

  EventDetail.handler.postDelayed(this, 5000);

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