【问题标题】:Service on Android OreoAndroid Oreo 上的服务
【发布时间】:2017-10-12 00:53:51
【问题描述】:

在 Android Oreo 上,如果我的应用程序在前台启动服务然后我关闭了我的应用程序,该服务会在以后被终止吗?还是会活下来?

从这个视频帖子看来,如果应用程序在后台,服务将被终止,https://www.youtube.com/watch?v=Pumf_4yjTMc&t=198s

但是,在测试过程中,该服务非常活跃。将感谢任何富有成效的反馈。

【问题讨论】:

  • 原来我没有在我的应用程序中使用 api 26。一旦我开始定位 api 26,它就会在应用程序处于后台时关闭服务。

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


【解决方案1】:

服务最终会被杀死

当一个应用程序进入后台时,它有几个窗口 仍然允许它创建和使用服务的分钟。在 在该窗口结束时,应用程序被认为是空闲的。在这 时间,系统停止应用程序的后台服务,就像 app 调用了服务的 Service.stopSelf() 方法。

https://developer.android.com/about/versions/oreo/background.html

【讨论】:

  • 请注意,在我的测试中,“几分钟”大约是 1 分钟。
  • 如果他们真的给了我们一个更窄的时间窗口,我们可以期待事情停止,那就太好了
【解决方案2】:

如果您关闭或销毁您的应用程序,服务的调用和您当前的所有应用程序进程将被终止,因为所有这些进程都与您的应用程序的生命周期相关联,如果生命周期被关闭、终止或崩溃了,所有进程都到同一个结尾。

【讨论】:

    【解决方案3】:

    感谢您的回答!感谢您的回复。当我切换不针对 API 26 的工作分支时,这很糟糕。 我认为,值得一提的是,上述限制仅适用于应用程序针对 api 26 (Android O) 的情况。 我已经开始转向 Job scheduler,这似乎适用于 Android O。

    【讨论】:

    • "值得一提的是,上述限制仅适用于应用程序以 api 26 (Android O) 为目标的情况" -- 用户也可以在 Android 8.0+ 上手动为消耗 a很多电池,显然。
    • @CommonsWare 是的,但大多数用户这样做的可能性很小
    • 同意 -- 我只是想确保阅读您的答案的人都知道。
    • 当然,这是有道理的,感谢您提及。
    • 感谢您的信息!真的很有帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 2018-03-12
    • 1970-01-01
    • 2019-01-23
    相关资源
    最近更新 更多