java - 当 float 为零时停止处理程序自动运行

标签 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 变为负值。所以我想知道应该如何修改它,以便其中一个 float 达到零,然后处理程序将停止运行。

提前致谢。

最佳答案

你的问题是由于

  EventDetail.handler.postDelayed(this, 5000);

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

关于java - 当 float 为零时停止处理程序自动运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28020424/

相关文章:

mysql - 如何显示本地化字符

android - 需要一个准确且可以暂停的 CountdownTimer android

java - 线程 OutOfMemoryError,强制关闭

android - 我怎么知道postdelayed已经完成了它在android中的操作

java - Spring 测试事务注释不起作用

JavaFX 正在运行,但 try-catch-finally 代码不起作用

java - 如何制作没有 double 和 float 的通配符

java - 如何设置 Android WebView 使其与 Android 浏览器相同?

android - 如何在 EditText 处于焦点时清除软键盘?

android - 如何在 Android Studio 中正确使用 postDelayed()?