【问题标题】:Android Oreo time sensitive background workAndroid Oreo 时间敏感的后台工作
【发布时间】:2018-02-27 16:36:09
【问题描述】:

当我将需要执行时间敏感的后台工作的应用迁移到 Oreo 时,我按照迁移指南遇到了问题:

Pre Oreo 我使用由Alarmmanager.setAndAllowWhileIdle 启动的服务来安排我的工作,使其始终在预定时间的几分钟内运行。现在,有了奥利奥,我不再被允许在后台启动服务。据我所知,建议是尽可能用广播接收器替换服务或使用预定作业。

我无法使用广播接收器,因为我想在后台执行的工作在极少数情况下可能需要超过 10 秒。

我也不认为我可以使用计划作业,因为如果设备处于打盹模式,则无法保证在计划时间的几分钟内运行。

由于当时运行服务对我的应用程序来说非常重要,以收集一些与记录时间相关的数据,我不知何故需要一种在 Oreo 后台限制下完成该任务的方法。

【问题讨论】:

    标签: android android-service android-8.0-oreo android-jobscheduler


    【解决方案1】:

    现在,有了奥利奥,我不再被允许在后台启动服务

    你确定。使用startForegroundService()getForegroundService() 作为PendingIntent。让它们指向前景Service,您可以在其中通过startForeground() 显示Notification

    【讨论】:

    • 这并不是用户希望在服务运行时看到通知的情况。虽然用户知道应用程序在后台运行,但他不想知道它何时运行,因为这与用户无关。此外,大多数情况下,服务只会运行几分之一秒,而出现和立即消失的通知看起来并不好。
    • @Ben:“这并不是用户希望在服务运行时看到通知的情况”——欢迎用户屏蔽此通知渠道。
    • 哦,对了,我没想到这种可能性,谢谢
    猜你喜欢
    • 1970-01-01
    • 2019-04-25
    • 2019-04-21
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多