Я пишу некоторый таймер. и я хочу отобразить его в textview
после нажатия кнопки «Пуск». Что я сделал. Каждый раз, когда яИспользование Thread несколько раз для обновления UI
timer = new Thread(new Runnable() {
@Override
public void run() {
while (!stopedButton) {
time = "";
if (timerMinutes >= 60) {
timerMinutes = 0;
timerHours++;
}
if (timerHours < 10)
time = "0" + String.valueOf(timerHours) + ":";
else
time = String.valueOf(timerHours) + ":";
if (timerMinutes < 10)
time += "0" + String.valueOf(timerMinutes);
else
time += String.valueOf(timerMinutes);
runOnUiThread(new Runnable() {
public void run() {
if (!stopedButton) {
mTimeFromStartValue.setText(time);
timerMinutes++;
} else {
timerMinutes = 0;
timerHours = 0;
}
}
});
Log.e(TAG, ""+timerHours);
Log.e(TAG, ""+timerMinutes);
Log.e(TAG, time);
try {
Thread.sleep(1 * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
так хорошо работает, но каждый раз после остановки, а затем начать и после того, как делать это много раз мой таймер начинает работать быстро. Я стараюсь избегать такой ситуации, и я думал, что мне не нужно создавать новый таймер каждый раз. Но мне нужно иметь рабочий таймер после остановки.
Я написал код так:
if(timer.isAlive()){
timer.resume();
}else{
timer.start();
}
Но я получил это исключение: java.lang.IllegalThreadStateException: Thread already started
так, как решить эту проблему?
Рекомендуемый способ для такого рода поведение в андроида является TimerTask –