Android O,后台服务运行超过30分钟.为什么?

Waq*_*qas 5 android android-pendingintent fusedlocationproviderapi android-8.0-oreo

我正在使用FusedLocationProvider API向PendingIntent注册一些Geofences,当我的应用程序启动时(应用程序被手动杀死以触发此行为)通过Geofence事件,我启动后台服务来做一些工作.

在这个服务中,我创建了一个单独的后台线程来执行一些长时间运行的任务,我获得了一个唤醒锁,以便我确信我的任务已经完成.服务保持运行更长的时间(30 - 50分钟),即使它不应该.根据我对Android O最近的变化的理解,它不应该是白名单并且保持自己运行更长的时间.

PendingIntents唤醒应用程序是否需要行为或某种错误,然后将其视为白名单,即使这些意图不是通知(即用户可以看到的任何内容).

或者这些意图属于"接收广播,例如短信/彩信".正如文档中提到的那样

小智 0

这可能是预览中的一些错误。

但是,您确定您的服务在 1 分钟后正在运行吗?即使服务被销毁,您创建的应用程序进程和后台线程也将/可以运行。

因此,您的服务确实传递了 onDestroy 回调,但您不会在那里停止线程并继续在后台工作。只有当整个应用程序的进程被终止时它才会停止,因为 Android 认为它不再重要了。