Я пытаюсь создать таймер в одном из своих действий, который будет запускаться каждую секунду, увеличивать переменную секунд, а затем увеличивать минуты на единицу, если секунды == 60, увеличивая часы на единицу, если минуты == 60.
_currentSeconds = _level.GetTimeSpentSeconds();
_currentMinutes = _level.GetTimeSpentMinutes();
_currentHours = _level.GetTimeSpentHours();
String currentTimeDisplay = _currentHours + "H " + _currentMinutes +"M " + _currentSeconds +"S";
_txtCurrentTime = findViewById(R.id.txtCurrentTime);
_txtCurrentTime.setText(currentTimeDisplay);
_totalGameTime = new Timer();
_totalGameTime.schedule(new TimerTick(), 1000);
}
private class TimerTick extends TimerTask{
TextView _txtCurrentTime = findViewById(R.id.txtCurrentTime);
public void run() {
_currentSeconds++;
TextView _txtCurrentTime = findViewById(R.id.txtCurrentTime);
if (_currentSeconds == 60){
_currentSeconds = 0;
_currentMinutes++;
}
if (_currentMinutes == 60){
_currentMinutes = 0;
_currentHours++;
}
String currentTimeDisplay = _currentHours + "H " + _currentMinutes +"M " + _currentSeconds +"S";
_txtCurrentTime.setText(currentTimeDisplay);
_level.SetTimeSpentSeconds(_currentSeconds);
_level.SetTimeSpentMinutes(_currentMinutes);
_level.SetTimeSpentHours(_currentHours);
}
}
Трудно точно сказать, как программа реагирует, из-за того, насколько длинной стала моя активность с подключенным отладчиком, но, похоже, это не помогает, TextView остается прежним.




Для этого вам не нужно использовать TimerTask. Вы можете использовать один из следующих вариантов:
Используйте хронометр... Просто реализуйте хронометр в XML или коде и используйте его метод start() для его запуска и метод stop() для его остановки. https://developer.android.com/reference/android/widget/Хронометр
Выяснил, что это сбой, потому что по какой-то причине у .setText для моего текстового представления были проблемы с байтами, и ему пришлось преобразовать их в строки с помощью Integer.toString(_currentSeconds). Понятия не имею, почему выполнение этого по таймеру вызывало эту проблему.