Несколько лет назад я написал приложение для Android, которое выполняет довольно простой процесс.Я установил ряд условий, состоящий из различных шагов (ходьба, бег трусцой, спринт) со временем, связанным с каждым сегментом: прогулка 1 мин, работа 2 мин, спринт 3 мин.Когда я нажимаю кнопку «Перейти», приложение отображает таймер обратного отсчета для каждого сегмента, полный таймер времени и темп (с использованием GPS).Дисплей есть, но главная особенность заключается в том, что приложение использует звук, чтобы сказать мне долго и долго до следующего перехода и что будет дальше.
Например, когда он запускается, он издает звук каждую секунду для5 секунд, затем говорит «2 минуты».На отметке 30 секунд будет слышен звук.Через 1 минуту он скажет «1 минута», другой звук через 30 секунд, затем за 10 секунд до изменения темпа, он скажет «Следующая нога (бег) (или прогулка или спринт)» и воспроизведет звук последние 5 секунд.Таким образом, мне не нужно смотреть на дисплей, чтобы узнать, где я нахожусь в созданной мной программе условия.
проблема: Когда я создал это и запустил его, я использовал две версии Android позади текущейодин у меня теперь (8.1.0), и теперь я запускаю его на LG Stylo 4. тогда устройство перешло бы в режим ожидания / ожидания, экран потемнел автоматически или я нажал кнопку питания, и приложение продолжило бы работатьпросто хорошо.Время тянет время, звуки будут издаваться вовремя.
Это первый раз, когда я установил и запустил свое приложение на новом телефоне / ОС, и скажем, что оно не прошло нормально.В какой-то момент мне показалось, что у меня осталось 30 секунд, и я не слышал ничего больше минуты.Похоже, что приложение теперь наполовину приостанавливается, например, 30 секунд превращаются в более чем 1 минуту, и при переходах нет звука.
Что-то изменилось с Android, похоже, этого не происходило в прошлых выпусках.Я хочу, чтобы программа продолжала работать в режиме реального времени, когда устройство переключается в спящий режим, и пока я читал об исключении приложения из режима экономии заряда аккумулятора, это не сработало.
Каким образом я могу сохранить это?приложение работает в фоновом режиме, производит обратный отсчет и издает звуки, даже когда телефон находится в спящем режиме.
- Версия ОС составляет 8.1.0
- Ядро 3.18.71
- build OPM1.171019.019
- Устройство: LM-Q710TS (LG Stylo 4)
Конкретный рассматриваемый код таков:
//runs without a timer by reposting this handler at the end of the runnable
Handler timerHandler = new Handler();
Runnable timerRunnable = new Runnable() {
@Override
public void run() {
// do something here to display
processTime(); // process what to be done on a sec by sec basis
try {
timerHandler.postDelayed(this, 1000);
} catch (Exception ex){
}
}
};
Я видел сообщениеэто относится к использованию частичного wakelock или, возможно, другой версии таймера, но не может найти его сейчас.Надеюсь, что есть прямой ответ на эту загадку.