持续运行后台服务

Cas*_*eyB 16 service android android-8.0-oreo

我的目标是sdk版本27,最低版本为19,并尝试获得在后台持续运行的服务.我尝试了不同的服务启动选项,但它仍然被应用程序杀死.我尝试使用BroadcastReceiver在它被杀死时启动该服务但是这给了我一个错误,说应用程序在后台并且无法启动服务所以我尝试使用JobScheduler并且这给了我同样的错误.应该怎么做?例如,如果我正在制作计步器应用程序,我怎么能让它在后台运行?

Khe*_*raj 27

在oreo发布中,Android定义了对后台服务的限制.

为了改善用户体验,Android 8.0(API级别26)对应用程序在后台运行时可以执行的操作施加了限制.

如果应用程序需要始终运行其服务,那么我们可以创建前台服务.

后台服务限制:当应用程序处于空闲状态时,其后台服务的使用受到限制.这不适用于前景服务,这对用户来说更加明显.

所以创建一个前台服务.在服务运行期间,您将在其中为用户发出通知.看到这个答案(还有很多其他的)

现在如果您不想要服务通知怎么办?解决方案就是这样.

您可以创建一些定期任务来启动您的服务,服务将完成其工作并自行停止.这样您的应用程序将不被视为电池耗尽.

您可以使用Alarm Manager,Job Scheduler,Evernote-JobsWork Manager创建定期任务.

我使用Work-Manager创建了永远运行的服务,这是完美的.

  • 工作经理无法使用中文roms oreo版本,例如氧气os,miui等,这些版本可用于plus,redmi等。 (2认同)
  • @Khemraj您可以为此用例发布示例代码吗?我一直在寻找诸如此类的解决方案的时代,我尝试了所有方法,但该应用程序不断取消后台服务。请任何有解决方案的人都可以发布它。 (2认同)