我正在尝试实现在 UI 上显示的倒数计时器,我认为这是一个干净优雅的解决方案,但 Logcat 抛出
AndroidRuntime(3282): java.lang.RuntimeException: An error occured while executing doInBackground()
,
private class UpdateCountdownTask extends AsyncTask<Long, Long, Void> {
@Override
protected Void doInBackground(Long... millisUntilFinished) {
new CountDownTimer(millisUntilFinished[0], 1000) {
@Override
public void onTick(long millisUntilFinished) {
publishProgress(millisUntilFinished);
}
@Override
public void onFinish() {
((TextView) findViewById(R.id.answer)).setText(answer);
}
};
return null;
}
@Override
protected void onProgressUpdate(Long... millisUntilFinished) {
super.onProgressUpdate(millisUntilFinished);
((TextView) findViewById(R.id.timer)).setText(""
+ millisUntilFinished[0] / 1000);
}
}
仍然不完全理解线程。谁能告诉我我做错了什么?
谢谢。
更新:非常抱歉。我是一个绝对无能的人。我忘记在柜台上调用方法 start()。:PI 终于用 CountDownTimer 自己实现了倒计时。Sill 不知道这是否真的在单独的线程上运行,但它现在可以工作。
CountDownTimer myCounter = new CountDownTimer(millisUntilFinished, 1000) {
@Override
public void onTick(long millisUntilFinished) {
((TextView) findViewById(R.id.timer)).setText(""
+ millisUntilFinished / 1000);
System.out.println("I am ticking");
}
@Override
public void onFinish() {
}
};
myCounter.start();