从Oreo
,如果应用程序不在前台,服务将无法工作,但我们可以使用JobSchedular
来执行后台操作。
那么真正的是JobScheduler
和startService()
之间的区别,以及为什么Android支持JobSchedular
超过startService()
的后台操作,来自oreo
。
我仍然可以从后台Schedule
大量的Jobs
,这也会影响电池性能。
从奥利奥,如果应用程序不在前台,服务将无法工作
是的,会的。它只需要是一个前台服务。
那么真正的区别是 JobScheduler 和 startService(( 之间的区别
startService()
立竿见影。使用JobScheduler
计划作业不是。JobScheduler
可以将工作推迟到以后需要完成其他工作,以最大程度地减少功耗(CPU,WiFi,移动数据等(的时间。
此外,startService()
总是会发生。使用JobScheduler
计划作业可能不会。您可以对作业设置条件(例如,需要网络连接(,并且只有在满足条件时才会运行作业。
以及为什么 android 在 startService(( 上支持 JobSchedular 进行 oreo 的后台操作。
据我所知,大部分功耗。
我仍然可以从后台安排大量作业,这也会影响电池性能。
是的,但谷歌有一个更好的API,能够在未来控制它。如果开发者滥用JobScheduler
,未来版本的 Android 可以进一步限制作业的速率,扩展作业的打盹模式,等等。
来自安卓开发者网站:
框架将智能地了解何时执行作业,并且 尝试尽可能多地批处理和延迟它们。通常,如果您 不要为作业指定截止日期,它可以随时运行 取决于作业计划程序内部队列的当前状态。
在作业运行时,系统会代表您的 .app。因此,您无需采取任何行动来保证 设备在作业期间保持唤醒状态。
启动后台服务时,即使应用在后台运行,它也会运行,因此它会使用资源。使用JobScheduler
资源仅分配并用于特定作业,并在完成后释放。