【问题标题】: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

【问题讨论】:

标签: android android-pendingintent fusedlocationproviderapi android-8.0-oreo


【解决方案1】:

这是预览中的一些错误。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 2023-03-12
    • 2018-12-15
    相关资源
    最近更新 更多