Я разрабатываю приложение, которое должно выполнять определенное действие в точное время, установленное пользователем. Для этого я использую метод setExactAndAllowWhileIdle(), поскольку в этой документации говорится, что устройства Android с Android 6.0 или выше имеют концепцию режима ожидания, в которой, если устройство несколько раз бездействует, оно перейдет в режим ожидания, а режим ожидания ограничивает сигналы тревоги. . Если я хочу включить сигнализацию, когда устройство находится в спящем режиме, то у меня есть метод setExactAndAllowWhileIdle(), как сказано в документации. В этой документации также описан способ ручного перевода устройства в спящий режим в целях тестирования. Итак, я тестирую этот способ, но мой будильник не срабатывает, когда устройство находится в спящем режиме, и когда я выключаю спящий режим с помощью команды терминала, мой прошлый будильник срабатывает мгновенно.
Итак, моя проблема в том, что setExactAndAllowWhileIdle() этот метод не работает в спящем режиме, но он должен работать, как сказано в документации. Я знаю ограничение этого метода: я могу активировать только один сигнал тревоги за 9 минут, и я следую этому правилу. Итак, я не могу понять, в чем проблема.
Мой код:
Код: Выделить всё
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC, d.getTime(), pendingIntent);
else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
alarmManager.setExact(AlarmManager.RTC, d.getTime(), pendingIntent);
else
alarmManager.set(AlarmManager.RTC, d.getTime(), pendingIntent);
Это проблема метода или я делаю это неправильно??
Подробнее здесь:
https://stackoverflow.com/questions/494 ... g-properly