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 だけでカウントダウンを実装することにしました。これが実際に別のスレッドで実行されるかどうかはわかりませんが、現在は機能しています。
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();