Android обрабатывает все ограничения AlarmManager - PullRequest
1 голос
/ 07 апреля 2019

У меня есть приложение будильника в магазине воспроизведения, которое очень хорошо работает на большинстве устройств, но, к сожалению, некоторые устройства сообщают, что будильник не срабатывает в установленное время, и я пришел к выводу, что есть устройства, которые ограничивают приложения работает в фоновом режиме и убивает менеджер тревоги!

Я обработал режим дозирования, используя следующий код:

if (Build.VERSION.SDK_INT >= 23)
{
alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, timeStamp, pendingIntent);
}
else if (Build.VERSION.SDK_INT >= 19)
{
alarmManager.setExact(AlarmManager.RTC_WAKEUP, timeStamp, pendingIntent);
}
else
{
alarmManager.set(AlarmManager.RTC_WAKEUP, timeStamp, pendingIntent);
}

Однако на некоторых устройствах этого кажется недостаточно.

Я прочитал, что служба переднего плана в любом случае может помешать системе убить приложение, однако я не могу этого гарантировать, поскольку у меня нет устройств, на которых возникает проблема.

Я хочу убедиться, что мой будильник работает отлично на всех устройствах и обрабатывает все сценарии, так что же можно сделать, чтобы убедиться, что мое приложение работает правильно и не уничтожено системой?

1 Ответ

3 голосов
/ 07 апреля 2019

Вы должны использовать AlarmManagerCompat.setAlarmClock () для установки видимого пользователем будильника, подходящего для приложения будильника.Этот API использует setAlarmClock () в API 21+, который согласно документации:

, эти аварийные сигналы будут разрешаться, даже если система находится в режиме ожидания с низким энергопотреблением.режим (он же доза).Система также может выполнить некоторую подготовительную работу, когда увидит, что появляется такой сигнал тревоги, чтобы уменьшить объем фоновой работы, которая может произойти, если это приведет к полному пробуждению устройства, - чтобы избежать таких ситуаций, как большое количествоустройства, в которых утром был установлен будильник, все просыпались в это время и внезапно наводняли сеть ожидающими фоновыми работами.Как таковые, эти типы сигналов тревоги могут быть чрезвычайно дорогими при использовании батареи и должны использоваться только по прямому назначению.

...