问题描述
我有这样的处理程序:
public void changeSpinnerWaitSelection2() {
Runnable runnable = new Runnable()
{
public void run()
{
if (count <= 3) spinnerWait.setSelection(count,true);
count++;
mTimerHandler2.postDelayed(this,500);
}
};
runnable.run();
}
,每次迭代都会加快速度。变量count
在另一个地方被重置。这个处理程序有什么问题?
与此相同的另一种方法可以完美地工作:
public void changeSpinnerWaitSelection() {
TimerTask mTt1 = new TimerTask() {
public void run() {
mTimerHandler5.post(() -> {
if (count > 4) { mTimer2.cancel();}
if (count <= 3) spinnerWait.setSelection(count,true);
count++;
});
}
};
mTimer2 = new Timer();
mTimer2.scheduleAtFixedrate(mTt1,500);
}
但是我更喜欢第一个版本,因为缺少TimerTask,这似乎对我的一个设备有害。
解决方法
第一个变体没有退出并且可以无限运行并且可能重复
尝试
if (count <= 3) spinnerWait.setSelection(count,true);
count++;
mTimerHandler2.postDelayed(this,500);
替换为
if (count <= 3) {
spinnerWait.setSelection(count,500);
}