Я только что попробовал AlarmManager, чтобы заставить мое приложение отправлять уведомление каждый день в 15:00. Но это работает, только если приложение все еще находится в фоновом режиме. Когда пользователь убивает приложение, AM больше не работает. Что я могу сделать вместо AlarmManager, чтобы добиться того, чего я хочу?
Android отправляет уведомление ежедневно, даже если приложение закрыто
Ответы:
Но это работает, только если приложение все еще находится в фоновом режиме.
Нет, он будет работать хорошо, даже если приложение не запущено, например, если его процесс будет завершен Android, чтобы освободить память для других приложений.
Когда пользователь убивает приложение, AM больше не работает.
Если под «убийствами» вы подразумеваете, что пользователь нажал «Принудительно остановить» для вашего приложения в настройках, тогда ваши сигналы тревоги не будут запланированы, и ваше приложение не будет запускаться снова, пока пользователь не запустит ваше приложение вручную (например, коснется вашей панели запуска). активность на главном экране).
Я слышал сообщения о том, что некоторые устройства, сделанные безмозглыми производителями, делают то же самое, что и «Принудительная остановка», когда пользователи останавливают приложение из поставляемого устройством «диспетчера задач». Это прискорбно.
В любом другом общепринятом определении «убийства» ваши сигналы тревоги не затрагиваются.
Что я могу сделать вместо AlarmManager, чтобы добиться того, чего я хочу?
Ничего такого. Если пользователь принудительно останавливает ваше приложение, он не хочет, чтобы ваше приложение работало, и поэтому ваше приложение не будет работать.
Вы можете использовать липкую фоновую службу, чтобы ваши уведомления отправлялись в любое время. С помощью простой запущенной службы вы можете запланировать любую задачу. Рассмотрите возможность использования wake_lock для длительных задач, которые могут потребовать, чтобы процессор не спал. Также обратите внимание на расход батареи. С Уважением.
AlarmManager
(прямо или косвенно) или получают push-уведомления (поскольку они являются приложением для обмена сообщениями). Любой из них будет заблокирован, если пользователь принудительно остановит WhatsApp, и любой из них будет работать в других случаях. 09.12.2013adb shell dumpsys alarm
для просмотра запланированныхAlarmManager
событий. Например, может случиться так, чтоAlarmManager
работает нормально, но вы допустили ошибки при использовании типов сигналов тревоги, например, не использовалиWakefulIntentService
илиWakefulBroadcastReceiver
с сигналом тревоги_WAKEUP
. 09.12.2013WakefulBroadcastReceiver
в документации и вот пример приложения. МойWakefulIntentService
имеет документацию на сайте проекта и вот пример приложения. 09.12.2013