当浮点数为零时停止处理程序自动运行
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
基本上我有一个处理程序可以在一段时间内自动 运行。这是代码:
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