首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WorkManager 基础入门

定义你的 work 做什么 我们将多个任务连接在一起之前,让我们关注如何执行一项工作。我将会着重细说上传任务。首先,你需要创建自己的 Worker 实现类。...我之前说过,如果 Worker 返回 Result.retry(),WorkManager 将重新计划工作。你可以创建新的 WorkRequest 时自定义退避条件。这允许你定义何时应重试运行。...幕后,WorkManager 包括以下部分: 内部 TaskExecutor:一个单线程 Executor,处理所有排队工作请求。...ENQUEUED:只要工作工作链中的下一个并且有资格运行,工作就会进入这个状态。这项工作可能仍在等待 Constraint 被满足。 RUNNING:在这种状态时,工作正在运行。...想亲自试试 WorkManager 吗?查看 codelab,包含 Kotlin 和 Java 代码。 随着我们继续更新本系列,继续关注有关 WorkManager 主题的更多博客文章。

15510

WorkManager 基础入门

定义你的 work 做什么 我们将多个任务连接在一起之前,让我们关注如何执行一项工作。我将会着重细说上传任务。首先,你需要创建自己的 Worker 实现类。...我之前说过,如果 Worker 返回 Result.retry(),WorkManager 将重新计划工作。你可以创建新的 WorkRequest 时自定义退避条件。这允许你定义何时应重试运行。...幕后,WorkManager 包括以下部分: 内部 TaskExecutor:一个单线程 Executor,处理所有排队工作请求。...ENQUEUED:只要工作工作链中的下一个并且有资格运行,工作就会进入这个状态。这项工作可能仍在等待 Constraint 被满足。 RUNNING:在这种状态时,工作正在运行。...想亲自试试 WorkManager 吗?查看 codelab,包含 Kotlin 和 Java 代码。 随着我们继续更新本系列,继续关注有关 WorkManager 主题的更多博客文章。

93560
您找到你想要的搜索结果了吗?
是的
没有找到

现代 WorkManager API 已发布

例如用户想要离线观看某个视频,又不想一直停留在应用界面等待下载完成,那么就需要以一定的方式让这些离线的过程在后台运行。...您可以知道一个工作是处于队列等待、运行中、阻塞还是已完成状态。 WorkManager 现代 API 上述的基础 API 早在我们发布 WorkManager 的第一个稳定版时就已经提供了。...立即执行 现在,当您的应用处于前台时,您可以请求立即执行某项工作。随后即便应用被置于后台,这项工作也不会被中断,而是继续进行。...这得益于新的 WorkManager 可以一个独立的进程中更高效地进行调度和处理。 强化的工作测试 API 应用发布到商店或是分发给用户之前,测试是非常重要的一个环节。...ForegroundInfo 是由通知 ID 和通知实例组合构造而成的,继续参照上述 CoroutineWorker 类的代码示例。

1.2K20

Jetpack-WorkManager

我们开头就说了,workManager是一个可以用来进行后台任务的组件。...因为workManager比service强大太多,它可以应用程序退出或者其他原因中止后,依然执行(本地任务如:本地图片的读取展示)或者应用程序打开后继续执行任务(网络请求)。...调用流程 看懂上面图片的意思了吧,翻译一下就是workManager发起一个任务,如果当前程序正在运行,它就会再开一个工作线程去处理,如果当前程序退出或者在后台,它就会选择一个合适的方案去执行,这就包括了...show(this,showContent) } /** * 执行任务 */ fun doWork(){ //创建单工作请求对象...链式调用 链式调用的方式有多种,可以让多个任务按顺序执行,也可以多个任务并行,上个任务的数据可以传递到下一个任务里等,这里就不具体展开说了。

1.5K20

笔记之Android架构组件-WorkManager

所以,不久的将来,service的使用范围会越来越小,取而代之的,是谷歌推出的新的技术:WorkManagerWorkManager工作的触发器 满足时, 运行可推迟的后台工作。...如果在任务运行期间某个约束不再得到满足,则 WorkManager 将停止工作器。当约束继续得到满足时,系统将重新尝试执行该任务。 2....还要求,必须在前一个后台任务运行完成之后,下一个后台任务才会运行。...每个唯一的工作序列都有一个名字,WorkManager一次只允许一个工作序列使用该名称,当我们创建一个新的唯一工作序列时,如果已经有一个未完成的序列具有相同的名称,则指定WorkManager应执行的操作...: 取消现有的序列并用新序列其替换 保持现有顺序并忽略新的请求 将新序列附加到现有序列,现有序列的最后一个任务完成后运行新序列的第一个任务 如果我们有一个不应该多次入队的任务,则唯一工作序列可能很有用

87610

Android Studio 对现代 WorkManager 的支持

上一篇文章 中,我们提到了现代 WorkManager API 对工具支持方面也进行了改进,本文我们将结合实际案例来看看具体有哪些改进。如果您更喜欢通过视频了解此内容, 点击此处 查看。...可以看到随着过滤的持续进行,每个 Worker 在其生命周期中的状态也持续变化着。由于这些 Worker 按照顺序运行,所以 CleanupWorker 需要在下一个 Worker 开始之前完成。...从中选择一个 Worker,切换到图表视图 (按钮为流程图样式)。对于更加复杂的队列来说,图表视图是一种高效且不可或缺的理解手段。...△ 演示 Worker 执行失败的场景 这里为您展示当工作链中的某个 Worker 执行失败时的场景。工作的接续队列中插入了一个出错的 Worker,然后重启应用。...您可以从这里点击直接进入 Worker 视图,然后继续调试出错的会话。 了解更多 通过本文您已经对新的后台任务检查器做了简单了解。

44420

alpakka-kafka(10)-用kafka实现分布式近实时交易

虽然通过分布式运算可以实现近实时的“秒购”交易,但每个“秒购”请求都直接被发往一个actor信箱里等待执行,如果在一个短时间内出现超大量请求的话就很可能使shard actor mailbox超载,造成系统崩溃...用户通过平台提供的http api向nrtxn平台提交交易请求(如库存扣减请求),等待或查询平台返回操作状态回应。...kafka reader读出请求并按请求中交易项目将请求发送给项目所属的分片txnProcessor-> txnProcessor完成操作后发送回应至workManager -> workManager...收到txnProcessor完成数据操作后的状态回应后从workStates中找出对应的请求地址进行回应: case WorkResponse(rsp) =>...通过back pressure,确保每个线程完成后才进行下一个请求读取。

33620

WorkManager _Android新架构组件

WorkManager底层会根据你的设备情况进行有选择的调度。...WorkManager使用LiveData来干会任务的数据和状态,所以,你的Activity可以观察这个LiveData,并且每当任务完成时都会得到通知。...WorkRequest:它代表了工作调度请求。每个工作必须在安排工作之前创建工作请求。 WorkRequest将包含工作的唯一标识,约束条件说明应在哪种情况下执行任务。这是一个抽象类。...WorkManager还提供方法来取消 唯一工作序列(高级用法中会有所涉及)中的所有任务,或尽最大努力的取消具有指定标记的所有任务。...详细使用方法参考:官网https://developer.android.com/topic/libraries/architecture/workmanager googlecodelabs关于WorkManager

2.7K20

协程中的取消和异常 | 驻留任务详解

然而,在有些情况下,您会希望即使用户离开了当前界面,操作依然能够执行完成。因此,您就不会希望任务被取消,例如,向数据库写入数据或者向您的服务器发送特定类型的请求。...针对那些在当前进程中有效的操作使用协程,同时保证可以在用户关闭应用时取消操作 (例如,进行一个您希望缓存的网络请求)。那么,实现这类操作的最佳实践是什么呢?...而如果您想要将协程限定在其他作用域,继续阅读,接下来本文将对此进行讨论。...请使用 launch 并调用 join 来等待完成。...veryImportantOperation 开始执行时被退出,它将继续执行直到下一个退出节点,而不是 veryImportantOperation 结束后退出; CoroutineExceptionHandler

1.4K20

WorkManager: 周期性任务

: 定义周期性任务 取消任务 自定义 WorkManager 配置 重复执行的任务 之前的文章中,我们已经介绍过使用 OneTimeWorkRequest 来规划任务。...v2.1-alpha02 之前,无法创建 PeriodicWorkRequest 时设置初始延迟 与他人的讨论中,我遇到的一些常见问题与周期性任务有关。...接下来我们需要将下一个任务在当前任务成功执行完成时加入队列: class DailyWorker(ctx: Context, params: WorkerParameters) : Worker(ctx...之所以存在这一约束,是因为一个任务链中,您会在一个 Worker 的状态转变为 SUCCEEDED 时过渡到任务链中的下一个 Worker,而 PeriodicWorkRequest 没有 SUCCEEDED...了解更多信息,查阅:WorkManager 的测试文档。

1.7K30

Jetpack WorkManager 看这一篇就够了~

如果工作始终要通过应用重启和系统重新启动来调度,便是持久性的工作。由于大多数后台处理操作都是通过持久性工作完成的,因此 WorkManager 是适用于后台处理操作的主要推荐 API。...这样我们就完成了一个最简单的WorkManager使用案例。接着我们来进一步的探索。...执行加急工作你所需要知道的 从 WorkManager 2.7 开始,我们可以调用setExpedited方法来告诉系统,我这个任务是加急任务,尽快执行。...Android 12 之前工作器中的 getForegroundInfoAsync() 和 getForegroundInfo() 方法可让 WorkManager 您调用 setExpedited...WorkManager官方虽然称它可以保证即使应用退出甚至手机重启的情况下,之前注册的任务仍然将会得到执行。

1.3K20

跟上脚步,进入后台执行新时代

如果您需要确保推迟的任务一定会被执行,务必调用 WorkManager。该 API 允许您调度任务 (单次执行或循环执行) ,组合任务和构成任务链。...创建此请求时,您应该添加 “需要联网”这一约束条件,指定任务仅在设备连接到有效网络时才会被触发。...如果任务由外部事件触发且运行时间较长,例如同步新数据,请先使用 Firebase Cloud Messaging 通知您的应用,然后再调用 WorkManager 创建同步数据的工作请求。...常见的定时任务包括: 服药提醒 电视节目开始前,向用户发送的提醒通知 触发标准闹铃后,您会有几秒钟的时间完成工作,此时应用可能无法访问网络 (例如,系统处于低耗电模式,或者应用被归入某一待机群组)。...请注意:WorkManager 目前只发布了公共预览版,您可以继续使用 JobScheduler 作为替代方案,不过和 WorkManger 相比,JobScheduler 有更多的局限。

2.5K30

Android Jetpack架构组件(七)之WorkManager

为了解决Android耗电的问题,Android提供了WorkManager ,用来对应用中那些不需要及时完成的任务提供一个统一的解决方案,借助WorkManager,开发者可以轻松调度那些即使退出应用或重启设备时仍应运行的可延期异步任务...开发者可以将其安排为某段时间内定期运行,也可以将其安排为仅运行一次。 不论您选择以何种方式调度工作,请使用 WorkRequest执行任务的请求。...默认政策是 EXPONENTIAL,延迟时间为 10 秒,开发者可以工作请求配置中替换此默认设置。...输入值以键值对的形式存储 Data 对象中,并且可以工作请求中设置,WorkManager 会在执行工作时将输入 Data 传递给工作,Worker 类可通过调用 Worker.getInputData...此政策将导致您的新工作链接到现有工作现有工作完成后运行。

1.8K11

WorkManager从入门到实践,有这一篇就够了

,而WorkManager的Demo早就完成了,只是要结合文章一起阐述实在需要时间,上周自身原因也就延期了,想想还是写代码容易啊...??...如果用户弱网的情况下点击关注按钮,此时用户由于某种原因马上退出了App,但关注的请求并没有成功发送给服务端,那么下次用户再进入时,拿到的还是之前未关注的状态信息。...很简单,看WorkManager的定义,使用WorkManager就可以轻松解决。这里就不再拓展实现代码了,只要你继续看完这篇文章,你就能轻松实现。...name;第二个参数ExistingWorkPolicy是设置name相同时的表现,它三个值,分别为: REPLACE: 当有相同name且未完成的链式请求时,将原来的进度取消并删除,重新加入新的链式请求...KEEP: 当有相同name且未完成的链式请求时,链式请求保持不变 APPEND: 当有相同name且未完成的链式请求时,将新的链式请求追加到原来的子队列中,即当原来的链式请求全部执行后才开始执行。

1.6K20

如何使用WorkManager执行后台任务(上)

底层的使用,提供了简单且灵活易用的API,它有很多优势: 支持异步一次性或周期任务 支持网络、存储空间以及电量状态等约束 可使用链式的调用方式来执行任务,也包括并行任务处理 一个工作任务的执行结果可以作为下一个任务的输入...约束类是可以使用 WorkRequest.Builder 创建的时候进行传递给 WorkRequest。 WorkManager工作任务管理器,它是用于管理工作任务的请求队列的类。...0x02 实践篇——工作流 假设我们开发一个图片相关的APP,这个应用需要期地压缩它存储的图片。我们使用 WorkManager来实现这个需求。...创建WorkRequest 使用 WorkRequest的子类,根据具体业务创建对应的请求实例。例如本例中,使用一次性任务来构建请求。然后把任务请求加入到 WorkManager管理的队列中。...创建 WorkRequest 的时候,可以执行给它指定一个Tag;而另一个任务请求也可以设置相同的Tag。

1.5K20

自定义 WorkManager —— 基础概念

目前为止本系列已经讨论过: Android Jetpack WorkManager | Android 中文教学视频 WorkManager  Kotlin 中的实践  WorkManager: 周期性任务...详解 本系列的下一篇文章将对依赖注入和 Dagger 展开讨论,持续关注我们。...自定义配置和 WorkerFactory WorkManager 类遵循 单例模式,而且它只能在实例化之前进行配置。这意味着,如果您想自定义它的配置,就必须先禁用默认配置。...WorkManager 的文档 中描述,禁用操作要在您的 AndroidManifest.xml 文件中完成。...如果您有任何疑问,可以评论区中留言。 接下来的文章我们将会讨论如何在自定义 WorkManager 配置时使用 Dagger,感兴趣的读者继续关注。

58940

Android Jetpack - 使用 WorkManager 管理后台任务

WorkManager 管理任务请求和任务队列,发起的 WorkRequest 会进入它的任务队列。...,也是通过 id 实现的: WorkManager.getInstance().cancelWorkById(request.id) 复制代码 这样我们就完成了一个最简单的 WorkManager,执行一下就可以看到打印的结果了...环境约束 WorkManager 允许我们指定任务执行的环境,比如网络已连接、电量充足时等,满足条件的情况下任务才会执行。...如果是 PeriodicWorkRequest,我想到的办法是每次执行之前,根据标签去取消已有的任务。 以上,就是本文对 WorkManager 的简单介绍和用法讲解。 保活?...对 Service 的限制 Android 6.0 (API 23) 休眠模式:关闭手机屏幕后,系统会禁止应用的网络请求等功能。

1.7K70

Android之任务调度WorkManager和JobSchedule的使用

WorkManager使用起来也非常简单,因为我这边定时任务的频率1分钟以内,如果不是因为最小间隔是15分钟的原因,就全部使用WorkManager了,直接代码开始。...Result.success():工作成功完成。 Result.failure():工作失败。 Result.retry():工作失败,应根据其重试政策在其他时间尝试。...以下代码会构建了一个工作请求,该工作请求仅在用户设备正在充电且连接到 Wi-Fi 网络时才会运行: val constraints = Constraints.Builder() .setRequiredNetworkType...: Boolean { // 返回true,表示该工作耗时,同时工作处理完成后需要调用onStopJob销毁(jobFinished) // 返回false,任务运行不需要很长时间...关闭APP再启动,JobScheduler并不能够直接继续运行,但是WorkManager可以。 如果重启APP的时候,WorkManager任务的计时器应该已经执行了一次或多次,则会立即开始执行。

3.4K10
领券