Я относительно новичок в разработке Android. Некоторое время назад я создал простое приложение для таймера яиц, которое подает сигнал, когда таймер достигает нуля. Однако я заметил, что если вы используете приложение для установки таймера несколько раз подряд (запускаете новый таймер после завершения предыдущего), будильник, который должен звучать, когда таймер достигает нуля, отключается случайным образом. количество секунд.
В качестве примера я установил таймер на две минуты, но будильник не прозвучал до тех пор, пока не прошли две минуты и тридцать пять секунд. Затем я снова провел тот же двухминутный тест с тем же результатом. Затем я установил таймер на десять секунд, и будильник не прозвучал до тех пор, пока не прошло двадцать шесть секунд.
Такое поведение также кажется совершенно случайным. Иногда приложение работает без проблем, иногда оно ведет себя так, как описано выше.
Что я пробовал:
Я заметил, что эта проблема только кажется. появится, когда приложение перейдет в фоновое состояние. Если экран неактивен, будильник будет звучать без проблем, каждый раз вовремя.
Я пробовал подключить физическое устройство к Android Studio, а также использовать симулятор в Android Studio для попробуйте отладить проблему. Проблема в том, что при подключении к Android Studio он никогда не выходит из строя. Он просто работает каждый раз.
Мой код для CountDownTimer() выглядит следующим образом:
Код: Выделить всё
countDownTimer = new CountDownTimer(countdown * 1000, 1000) {
public void onTick(long timeTillEnd) {
timerView.setText(String.valueOf(DateUtils.formatElapsedTime(timeTillEnd / 1000)));
}
public void onFinish() {
final MediaPlayer mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.alarm_sound);
mediaPlayer.start();
mediaPlayer.setOnCompletionListener(mp -> {
mediaPlayer.reset();
mediaPlayer.release();
});
resetCountdownTimer();
}
}.start();
Код: Выделить всё
public void resetCountdownTimer() {
countDownTimer.cancel();
countdownIsActive = false;
togglePresets();
startStopButton.setText(R.string.start);
startStopButton.setActivated(false);
}
Код: Выделить всё
mediaPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);Код приложения очень маленький и простой. Все это выполняется в основном потоке. Использование: compileSdkVersion 33, minSdkVersion 26, targetSdkVersion 33.
Может ли кто-нибудь помочь мне исправить/разобраться в этой проблеме?
Подробнее здесь: https://stackoverflow.com/questions/785 ... on-android
Мобильная версия