我已经阅读了有关 Android API Level 26 中新背景限制的 Android 文档,考虑到这些,我设计了我的应用程序如下:
- 该应用程序具有
BroadcastReceiver
收听"SMS_RECEIVED"
广播的功能。这是一个隐式广播,现在在 Oreo 中受到限制,但它是例外列表中的一个。 - 当它
BroadcastReceiver
运行时,它会将一个新任务排入队列,由 a 执行JobIntentService
。接收广播时,应用程序应暂时列入白名单,因此JobIntentService
有机会做它的事情。
即使我从“最近的应用程序”列表中关闭该应用程序,所有这些似乎都工作得很好。但是,我收到一些用户的报告,显然每隔几天,他们必须再次打开该应用程序,因为它突然停止在后台工作。
为什么操作系统突然停止向"SMS_RECEIVED"
我的应用程序发送广播?如果不是这样,那一定是JobIntentService
不允许运行。为什么不?该应用程序应在收到短信后立即列入白名单。我有什么误解?