gpt4 book ai didi

android - 何时使用 JobIntentService 与 WorkManager?

转载 作者:行者123 更新时间:2023-12-03 13:25:14 25 4
gpt4 key购买 nike

Google 最近弃用了 IntentService:https://android.googlesource.com/platform/frameworks/base.git/+/6f8b09029932dfd24945202017639754b00acc2e

IntentService 的文档现在说:

 * @deprecated IntentService is subject to all the
* <a href="/preview/features/background.html">background execution limits</a>
* imposed with Android 8.0 (API level 26). Consider using {@link androidx.work.WorkManager}
* or {@link androidx.core.app.JobIntentService}, which uses jobs
* instead of services when running on Android 8.0 or higher.

那么 JobIntentService 和 WorkManager 有什么区别,在什么情况下推荐使用哪一个呢?

谷歌甚至没有在这个页面上提到 JobIntentService,他们只提到了 WorkManager: https://developer.android.com/guide/background

最佳答案

由于 Android Oreo 我们不能再让正常的服务在后台运行,因为系统会:

1-如果应用程序本身在启动服务后进入后台,大约一分钟后终止服务

2-如果应用程序本身在后台时启动服务,则抛出异常

IntentService 只是普通服务的一个子类,它在后台线程上按顺序执行所有工作,并在完成所有工作时自行停止。但作为一项服务,它也受到上述限制的影响。

现在对于 JobIntentService:

将在 Pre-Oreo 设备上充当普通 IntentService(因为我们没有任何限制),并且在 Oreo+ 上将使用 jobScheduler 来实现与 IntentService 类似的行为。 它只是尽快开始工作 ,安排其工作通过
JobScheduler 和 JobScheduler 可以选择 推迟这有点工作,但它的工作更有可能在内存不足的情况下,在打瞌睡模式下或达到时间限制(约10分钟)时有所不同或中断

使用 JobIntentService,做一些配置是 不可能 ,
比如具体定义我们希望我们的工作在什么情况下开始(例如设备当前正在充电或我们是否有 WIFI 连接),但是使用 workmanager 我们 可以设置这些约束。

对有一些 的作业使用 WorkManager约束 ,或用于事务性的工作/工作未进行 ,或者对于可能发生的工作 future 某个时候 , 并在您想要复制 Android Oreo+ 上的正常 IntentService 的行为时使用 JobIntentService,并且对于可能会稍微延迟并且可能需要超过 1 分钟但不到 10 分钟的作业。

希望我回答了你的问题。

问候

关于android - 何时使用 JobIntentService 与 WorkManager?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59725556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com