即使应用程序关闭也运行作业(Android Oreo)

Posted

技术标签:

【中文标题】即使应用程序关闭也运行作业(Android Oreo)【英文标题】:Running a job even if app is closed (Android Oreo) 【发布时间】:2018-12-16 17:27:10 【问题描述】:

直升机,

我已将我的应用升级到 android 8.0 及更高版本。但是现在我的后台推送通知不起作用。

当我使用带有计时器的服务时,我的应用运行良好。所以我的俯卧撑通知数据库每 4 分钟重新加载一次。

现在在 Android 8.0 中,一切似乎都被打破了。当我运行应用程序并强制关闭时,出现异常。

所以,现在我尝试了这个库:https://evernote.github.io/android-job/。我创建了一个定期作业。但是当我关闭应用程序时,工作就消失了。

我的问题是:

如何在 Android 8.0 及更高版本中执行后台任务,即使应用程序已关闭?也许有人可以给我写一个例子或链接一个处理这个主题的网站?

【问题讨论】:

【参考方案1】:

那是因为

Android 8.0(API 级别 26)对应用的功能施加了限制 在后台运行时。

在这种情况下:

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

使用JobScheduler

在这种情况下,文档建议您的应用可以用JobSchedulerjobs 替换后台服务

【讨论】:

有人知道,网上有没有例子或教程? 实际上在这里youtu.be/Pumf_4yjTMc 和阅读文档后介绍了限制

以上是关于即使应用程序关闭也运行作业(Android Oreo)的主要内容,如果未能解决你的问题,请参考以下文章

即使应用程序关闭也运行时钟或计时器[重复]

在我的团队中,即使我不知道任何 android 的信息,他们也会给我做一个适配器的作业。那是啥?

ios - 即使应用程序关闭,我也可以运行后台线程吗

即使 autoRotation 关闭,也能获取 android 设备方向

即使App已关闭,也会收到Android推送通知

Laravel 排队的作业即使有延迟也会立即处理