Android O后台服务限制背后的逻辑

Android O后台服务限制背后的逻辑,第1张

概述here和 here解释了运行后台服务的新限制. 这种新行为显然是为了阻止应用程序在后台执行大量 *** 作而用户甚至不知道,这是公平的. 但是,建议的解决方法之一是使用预定作业.但这不是也可能导致应用程序“在没有用户意识到的情况下在后台做很多事情”吗?唯一的区别是Android决定何时完成这些工作,而不是应用程序. 那么,新限制究竟是什么意思呢?或许我错过了一些基本的东西. 编辑:这不是this que here和 here解释了运行后台服务的新限制.

这种新行为显然是为了阻止应用程序在后台执行大量 *** 作而用户甚至不知道,这是公平的.

但是,建议的解决方法之一是使用预定作业.但这不是也可能导致应用程序“在没有用户意识到的情况下在后台做很多事情”吗?唯一的区别是AndroID决定何时完成这些工作,而不是应用程序.

那么,新限制究竟是什么意思呢?或许我错过了一些基本的东西.

编辑:这不是this question的副本…一个是关于使用startServiceInForeground()作为替代(或关于相关的文档),而这个问题是关于使用预定作业作为替代(以及是否失败的目的)完全新的限制).这些是完全不同的选择.

解决方法 我明白你的意思了.

在我看来(通过阅读文档后)这是我们使用新JobScheduler的唯一专业人士.

但是如果你看一下Job Scheduler Improvements in O

Scheduled jobs Now support several new constraints:

JobInfo.isRequireStorageNotLow()
Job does not run if the device’s available storage is low.

JobInfo.isRequireBatteryNotLow()
Job does not run if the battery level is at or below the criticial threshold; this is the level at which the device shows the Low battery warning system dialog.

NETWORK_TYPE_METERED
Job requires a metered network connection,like most cellular data plans.

您会注意到,对于每个JobInfo,您可以指定需要为作业启动哪些约束.

Once the job has been started,it is then free to use as many resources as it wants for however long it wants.

这似乎是正确的,因为没有来自文档的指示,如果/何时再次需要资源会发生什么.但是,您可以将大任务分解为较小的任务,然后使用[JobScheduler.enque()](https://developer.android.com/reference/android/app/job/JobScheduler.html#enqueue(android.app.job.JobInfo,androID.app.job.JobWorkItem))方法确保JobScheduler在队列中启动下一个作业之前停止否则需要资源.但是,如果JobScheduler为Job暂停/停止提供方法或回调可能没有必要(由于文档没有进入,因此可疑)我自己从未尝试过.

结论:

总而言之,虽然新API并不完全限制后台服务在所需资源可用时运行,但它确实为编码人员提供了一个平台,以便仅在满足上述条件时限制它们启动,同时还限制最小行代码需要.在大多数情况下,应该最大限度地减少电池使用并为用户提供更流畅的体验.

总结

以上是内存溢出为你收集整理的Android O后台服务限制背后逻辑全部内容,希望文章能够帮你解决Android O后台服务限制背后的逻辑所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1124025.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存