2016-12-30 4 views
2

Простой демонстрационный GitHub проект: https://github.com/Try4W/AlarmManagerDemoAlarmManager: PendingIntent пошел после того, как ударяя приложение из недавних приложений на некоторых устройствах

На эмуляторы (Android 4.1.1, Android 6):

  1. Я планирования нового PendingIntentAlarmManager с
  2. проверки активных сигналов через adb shell dumpsys alarm
  3. увидеть мой Intent
  4. близко приложение с помощью ударяя его из недавних приложений
  5. проверки активных сигналов тревоги с помощью adb shell dumpsys alarm
  6. см моего Intent
  7. BroadcastReciver выстрелил в то время!

На моем устройстве (Пусть V One/Android 6):

  1. Я планирования нового PendingIntent с AlarmManage
  2. проверки активных сигналов тревоги с помощью adb shell dumpsys alarm
  3. увидеть мой Intent
  4. близко приложение с помощью извлечение его из последних приложений
  5. проверить активные сигналы через adb shell dumpsys alarm
  6. НЕ видеть мой Intent
  7. BroadcastReciver не обжигает при все

Если добавить мое приложение к «защищенным приложениям» Intent не удаляется после удаления приложения из последних приложений.

НО! На моем устройстве сообщение об анонимном сообщении AliExpress без добавления в «защищенные приложения».

Примечание: тревога по расписанию без проблем на BOOT_COMPLETED

Как они достигают этого?

Я уже пробовал:

  1. набор тревоги через alarmManager.setAlarmClock(...)
  2. набор тревоги через setExactAndAllowWhileIdle(...)
  3. использования намерения фильтра для выполнения BroadcastReciever
  4. набор тревоги от Service работает в отделенной процессе
+1

Некоторые производители телефонов, которые используют «защищенные приложения» имеют популярные и надежные приложения, добавленные в список автоматически –

+0

@nickfriskel это странное поведение. Как работают сторонние аварийные приложения, не входя в «белый список»? – Alexandr

ответ

1

На некоторых (наиболее) Android устройствах, прокручивая приложение из списка приложений recents, это то же самое, что и force-closing с экрана настроек Apps.

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

Смотреть это: AlarmManager does not work when app is force closed

+0

Загрузка приложения для BroadcastReceiver без проблем. Более того, это успешный график новой тревоги. – Alexandr

+0

Такие приложения, как «MyTherapy Meds», работают без добавления в «защищенные приложения» даже после прокрутки приложения из последних приложений. Я декомпилирую это apk и не могу найти какую-либо особую вещь при планировании их аварийных сигналов. – Alexandr

+1

Конечно, 'BroadcastReceiver's разбудит ваше приложение, а также множество других идей Android. Проблема связана только с аварийными сигналами AlarmManager. Вы можете зарегистрироваться на часто называемую трансляцию на телефоне и перепланировать свои сигналы тревоги, если обнаружите, что раньше вы были закрыты. – marmor