Android O,后台服务运行超过 30 分钟。为啥?
Posted
技术标签:
【中文标题】Android O,后台服务运行超过 30 分钟。为啥?【英文标题】:Android O, Background Service is running for more than 30 minutes. Why?Android O,后台服务运行超过 30 分钟。为什么? 【发布时间】:2017-10-08 22:23:08 【问题描述】:我正在使用 FusedLocationProvider API 向 PendingIntent 注册一些地理围栏,当我的应用程序通过地理围栏事件启动(应用程序被手动终止以触发此行为)时,我启动了一个后台服务来做一些工作。
在此服务中,我创建了一个单独的后台线程来执行一些长时间运行的任务,并获得了一个唤醒锁,以确保我的任务已完成。该服务会持续运行更长的时间(30 - 50 分钟),即使它不应该如此。根据我对 android O 近期变化的理解,它不应该被列入白名单并让自己运行更长的时间。
PendingIntents 唤醒应用程序是否是期望的行为或某种错误,然后它被视为白名单,即使这些 Intents 不用于通知(即用户可以看到的任何内容)。
或者这些意图属于“接收广播,例如 SMS/MMS 消息”的类别。如上所述here in documentation
【问题讨论】:
谷歌问题跟踪器上的同样问题,我希望有人能比谷歌更快地回答它:) issuetracker.google.com/issues/38162258 【参考方案1】:这是预览中的一些错误。
但是,您确定您的服务会在 1 分钟后运行吗? 即使在服务被销毁后,您创建的应用程序进程和后台线程也将/可能运行。
所以你的服务确实传递了 onDestroy 回调,但你不会在那里停止你的线程并继续在后台工作。它只会在整个应用程序的进程被杀死时停止,因为 Android 认为它不再重要了。
【讨论】:
以上是关于Android O,后台服务运行超过 30 分钟。为啥?的主要内容,如果未能解决你的问题,请参考以下文章