У меня есть несколько тестов JUnit, которые нажимают кнопку, которая вызывает следующие функции:
public void startTimer() {
startTime = SystemClock.uptimeMillis();
handler.post(runTimer);
blink();
}
Runnable runTimer = new Runnable() {
@Override
public void run () {
millisecondTime = SystemClock.uptimeMillis() - startTime;
updateTime = bufTime + millisecondTime;
Seconds = (int) (updateTime / 1000);
Minutes = (int) (updateTime / 60000);
Hours = Minutes / 60;
Minutes = Minutes % 60;
Seconds = Seconds % 60;
MilliSeconds = (int) (updateTime % 1000);
timer.setText(String.format("%02d", Hours) + ":" + String.format("%02d", Minutes) + ":"
+ String.format("%02d", Seconds));
handler.postDelayed(this, 0);
}
public void blink() {
Animation anim = new AlphaAnimation(0.0f, 1.0f);
anim.setDuration(250); //You can manage the blinking time with this parameter
anim.setStartOffset(0);
anim.setRepeatMode(Animation.REVERSE);
anim.setRepeatCount(Animation.INFINITE);
redCircle.startAnimation(anim);
}
Для контекста, следующий шаг в моем тесте JUnit нажимает кнопку, которая вызывает остановку анимации и handler.removeCallbacks (runTimer) ). Однако это даже не происходит, потому что это просто застряло!
Когда я закомментирую ОБА handler.post () и blink () в функции startTimer (), тесты JUnit снова начинают работать. Я не могу найти какие-либо решения для этого. Может кто-нибудь помочь, пожалуйста?