android – AlarmManager:PendingIntent在某些设备上从最近的应用程序中滑动应用程序后消失了

简单的演示
GitHub项目:
https://github.com/Try4W/AlarmManagerDemo

在模拟器上(Android 4.1.1,Android 6):

>我使用AlarmManager安排新的PendingIntent
>通过adb shell dumpsys警报检查活动警报
>看我的意图
>通过从最近的应用程序刷它来关闭应用程序
>通过adb shell dumpsys警报检查活动警报
>看我的意图
> BroadcastReciver当时被解雇了!

在我的设备上(LeTv One / Android 6):

>我使用AlarmManage安排新的PendingIntent
>通过adb shell dumpsys警报检查活动警报
>看我的意图
>通过从最近的应用程序刷它来关闭应用程序
>通过adb shell dumpsys警报检查活动警报
>不要看我的意图
> BroadcastReciver根本没有被解雇

如果我将我的应用程序添加到“受保护的应用程序”,则从最近的应用程序中删除应用程

但!在我的设备上AliExpress的应用程序发布通知,而不添加到“受保护的应用程序”.

注意:BOOT_COMPLETED上的预定报警没有问题

他们是怎么做到的?

我已经尝试过的:

>通过alarmManager.setAlarmClock(…)设置闹钟
>通过setExactAndAllowWhileIdle(…)设置闹钟
>使用intent-filter执行BroadcastReciever
>在分离的进程中设置从Service运行的警报

最佳答案 在某些(大多数)Android设备上,从最近的应用列表中滑动应用程序与从应用程序设置屏幕强制关闭应用程序相同.

Android假设这意味着用户不需要此应用程序的任何活动,直到另行通知,这意味着用户手动启动应用程序.

见:AlarmManager does not work when app is force closed

点赞