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

Android Jetpack架构组件(七)之WorkManager

2.2 定义 Worker 创建一个继承自WorkerWorker类,然后Worker类doWork()方法执行要运行任务,并且需要返回任务状态结果。...例如,doWork()方法实现上传图像 任务。...3.4 观察任务状态 将任务加入到队列后,我们可以根据 name、id 或与其关联 tag WorkManager 查询任务相关信息,并且检查它状态,涉及方法有如下几个。...3.6 观察任务进度 WorkManager 2.3.0为设置和观察任务中间进度提供了支持,如果应用在前台运行时,工作器保持运行状态,那么也可以使用WorkInfo LiveData Api向用户显示此信息...ListenableWorker 支持使用setProgressAsync() 方法来保留中间进度。ListenableWorker只有在运行时才能观察到和更新进度信息。

1.8K11

现代 WorkManager API 已发布

我们会在这个类当中定义一些辅助方法来简化我们工作。首先是一个 notification 方法,它可以根据所给定进度信息生成一条 Android 通知消息。...接下来我们要定义一个用于分块下载方法,这个方法接受三个参数: 下载文件 URL、文件保存本地位置、suspend 回调函数。每当某个分块下载状态变化时,此回调就会被执行一次。...由于每次回调发生时都会提供一些最新进度信息,所以我们可以利用这些信息来构建通知,并调用 setForeground 方法来向用户显示这些通知。...另外需要注意,进程内调度程序只默认进程运行。 多进程初始化 △ 多进程初始化过程 接着我们再看看如果应用有第二个进程会发生什么。...有没有办法能够防止在其中再次初始化 WorkManager?事实证明这是可以办到。其实我们真正需要是完全不必初始化 WorkManager

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

WorkManager 基础入门

第一篇博文中,我们讨论了 WorkManager什么以及何时使用 WorkManager。...定义你 work 做什么 我们将多个任务连接在一起之前,让我们关注如何执行一项工作。我将会着重细说上传任务。首先,你需要创建自己 Worker 实现类。...我将会把我们类命名为 UploadWorker,然后重写 doWork() 方法。 Workers: 定义你工作实际做了什么。 接受输入并产生输出。输入和输出都以键值对表示。...调用 enqueue 来启动 WorkManager 跟踪和调度工作整个过程。 幕后 —— 工作是怎么运行 那么,WorkManager 能为您做些什么呢?...如果您不熟悉 Executors,可以在这里阅读更多相关信息。 WorkManager 数据库:一个本地数据库,可跟踪所有工作所有信息和状态。

15210

WorkManager 基础入门

第一篇博文中,我们讨论了 WorkManager什么以及何时使用 WorkManager。...定义你 work 做什么 我们将多个任务连接在一起之前,让我们关注如何执行一项工作。我将会着重细说上传任务。首先,你需要创建自己 Worker 实现类。...调用 enqueue 来启动 WorkManager 跟踪和调度工作整个过程。 幕后 —— 工作是怎么运行 那么,WorkManager 能为您做些什么呢?...如果您不熟悉 Executors,可以在这里阅读更多相关信息。 WorkManager 数据库:一个本地数据库,可跟踪所有工作所有信息和状态。...“happy path” 或工作状态 工作状态经历 “happy path” 如下: BLOCKED:只有当工作并且不是链下一个工作时才会出现这种状态。

93560

Jetpack组件之WorkManager

API Level23以上设备,通过JobScheduler完成任务;API Level23以下设备,通过AlarmManager和Broadcast Receiver组合来执行任务,无论哪种方案...任务一定会被执行 WorkManager能保证任务一定会被执行,即使应用程序不在运行,甚至是设备重启后,任务仍然会在适当时刻执行,这是因为WorkManager有自己数据库,任务所有信息和数据都保存在数据库...工作器的确切执行时间取决于您在 WorkRequest 对象设置约束以及系统执行优化。 需要注意是定义最短重复间隔是 15 分钟,源码可以看到。...5分钟,源码可以看到。...超过这个时间,这个结果就会被存储到数据库 //下次想要查询该任务结果时,会触发workmanager数据库查询操作,可以通过uuid来查询任务状态

1.1K10

Android新架构组件WorkManager

这三个和WorkManager并不是替代关系. 这三个工具, 能帮助你应用开后台线程干活, 但是应用一被杀或被关闭, 这些工具就干不了活了。...导入WorkManager app/build.gradle文件中加入如下依赖配置: Kotlin implementation "android.arch.work:work-runtime-ktx...客户端定时去后台拉取, 看有没有推荐. 这时我们要分两步走. 第一步是确定要干什么活(去后台pull推荐信息);第二步是让这个活入队列。...这时就要用上Worker.getInputData()方法了。 2.同理, doWork()方法是返回void。你要是有结果想传出去, 就可以用Worker.setOutputData()。...进阶 WorkManager 提供了一个接口让我们拿到结果, 这个东东就是 WorkStatus. 你可以由id得到你想要那个任务WorkStatus.

67230

Jetpack WorkManager 看这一篇就够了~

什么WorkManager 按照官方描述,WorkManager 是适合用于持久性工作推荐解决方案。如果工作始终要通过应用重启和系统重新启动来调度,便是持久性工作。...doWork方法,我们可以在这个方法执行具体任务,这里为了有演示结果打印出线程名称。...为任务传递参数 许多时候我们执行任务时候是需要参数,比如上传日志文件我们要知道日志文件路径或者其他参数,我们怎么样将参数传递给Worker呢?...filePath和文件名fileName,Worker通过getInputData方法接受,比如我们doWork接受参数并打印。...运行程序,结果如下图所示。 类似的我们还可以通过cancelWorkById等方法来取消任务执行。这里不做演示了。此外还有一些其他特性感兴趣读者可以自行实践。

1.3K20

WorkManager Kotlin 实践

WorkManager 发布日志 描述那样,只需要在 build.gradle 文件添加 androidx.work:work-runtime-ktx 依赖项,即可使用 KTX 版 WorkManager...在这里,我想重点介绍一下什么是 CoroutineWorker,并且涵盖一些细小但很重要区别,以及深入了解如何使用在 WorkManager v2.1 引入新测试特性,来测试您 CoroutineWorker...您可以 WorkManager 测试文档页面 和新 使用 WorkManager 2.1.0 进行测试 指南中了解更多相关信息。...CoroutineWorker 运行结果,然后可以直接检查 Worker 类逻辑行为是否正确。...现在您可以非常容易对 Worker 类进行测试,并且 WorkManager Kotlin 整体使用体验也非常棒。

1.8K10

划重点 | Android Jetpack 三大重要更新!

这个工具可以正在运行应用查看、检索以及修改数据库内容。...诊断结果示例 为了帮助您避免使用 WorkManager 时遇到一些常见错误,我们同时还新增了 Lint 规则来标识它们。...另外还有一些 API 更新,包括支持设置和观察 Worker 中间进度、一些对于当前 Worker 查询 API 优化、一些对于进行工作器调度优化。...Worker 中间进度 https://developer.android.google.cn/topic/libraries/architecture/workmanager/how-to/intermediate-progress...CPU 性能剖析工具,该工具可以帮助开发者分析应用性能基准测试结果,并且可以 Android Studio 中直接查看相关方法和抽样堆栈信息。

1.6K40

什么各大厂自研内存泄漏检测框架都要参考 LeakCanary?因为它是真强啊!

Android 应用内存泄漏可以分为 2 类: Java 内存泄露: 不再使用对象被生命周期更长 GC Root 引用,无法被判定为垃圾对象而导致内存泄漏(LeakCanary 只能监控 Java...1.2 为什么要使用 LeakCanary? LeakCanray 是 Square 开源 Java 内存泄漏分析工具,用于实验室阶段检测 Android 应用中常见内存泄漏。...计数未到达阈值过程,LeakCanary 会发送一条系统通知,你也可以点击该通知提前触发分析工作; 收集过程系统通知消息 提示: LeakCanary 为不同 App 状态设置了不同默认阈值...一步步跟踪代码可以看到 LeakCanary 配置项设置了多个事件消费者 EventListener,其中与 HeapDump 事件有关是 when{} 代码块中三个消费者。...,也可以配置项自定义。

1K10

使用 Kotlin API 实践 WorkManager

WorkManager 提供了一系列 API 可以更加便捷地规划异步任务,即使应用被关闭之后或者设备重启之后,仍然需要保证立即执行或者推迟执行任务被正常处理。...对于 Kotlin 开发者,WorkManager 为协程提供了最佳支持。本文中,我将通过实践 WorkManager codelab 为大家展示 WorkManager 与协程相关基本操作。...在这个 WorkManager codelab 教程,我们会对图片进行模糊化处理,并且将处理后数据存储磁盘上。我们看一下这个过程需要哪些操作。...我们来将上面的示例操作变得复杂一点,比如我希望在数据库存储所有进行模糊化处理文件 Uri。...doWork() 方法是一个 suspend 方法。也就是说我们这里可以调用可挂起 dao 函数。 /* Copyright 2020 Google LLC.

50530

笔记之Android架构组件-WorkManager

所以,不久将来,service使用范围会越来越小,取而代之,是谷歌推出技术:WorkManagerWorkManager工作触发器 满足时, 运行可推迟后台工作。...WorkManager会根据设备API情况,自动选用JobScheduler, 或是AlarmManager来实现后台任务,WorkManager里面的任务应用退出之后还可以继续执行(注意:是程序退出...,并非杀死进程还可以继续执行任务),这个技术适用于应用退出之后任务还需要继续执行需求,对于应用退出之后任务也需要终止需求,可以选择ThreadPool、AsyncTask。...配置后台运行任务运行条件和约束条件,并且构建后台任务请求 将后天任务请求传入WorkManager.enqueue(),系统会在合适时间运行。 1....// WorkManager 提供两种不同类型 InputMerger: // OverwritingInputMerger 会尝试将所有输入所有键添加到输出

87610

Android 多线程技术哪家强?

中间有这么一个需要权衡地方。 那么咱又开始琢磨了,既然Foreground Service这么蛋疼,能不能要一个可以保证执行,但是不改变咱appUX框架呢。 当当当当!...WorkManager会把你任务序执行id和相关信息保存在一个数据库App重新打开之后会根据你在任务设置限制(比如有的任务限制必须在Wifi下执行,WorkManager提供这样API)来重新开启你未完成任务...既然App开发者不遵守游戏规则(没错我说就是那些不要脸xx保活app),那么谷歌就自己制定规则,操作系统,谷歌进一步缩减后台任务可以执行条件。...所以我们上面的例子里面,WorkManager也是可以使用。 但是!Trade Off又来了。虽然WorkManager和Activity生命周期无关了,但是却和整个App前后台状态相关了。...那个时候我就觉得,函数式编程操作符实在太屌了,酷炫操作符叠在一起,简直是狂炫酷霸拽有没有,加上团队懂RxJava的人不多,大家有问题都会找我,我虚荣心也迅速膨胀到了月球。。。

92530

Git!从零开始连接远程仓库

,想添加什么可以,尽量用英文 查看一下仓库状态 ”nothing to commit, working tree clean“无事可做,工作树干净 意思是之前文件都提交了,现在没有需要提交文件了...,工作树(缓存区)很干净(因为缓存区都提交了 恭喜,到这一步,你已经有了一个Git本地仓库,并学会了如何往仓库中提交文件 ---- 仓库分支—-查看仓库时候,第一行”On branch...cat /User/你自己用户名/.ssh/id_rsa.pub 或者 cat ~/.ssh/id_rsa.pub 中间这一大段就是本地GitSSH 公钥,复制它即可 方法二: ...(这个就叫跟踪,知道你什么时候修改什么文件) 只有将修改了文件添加到Git缓存区,文件状态才能被Git跟踪 当你完成了所有的工作、已经不需要再对任何文件进行更改,就执行最后一步:将缓存区文件提交到...,只是给了Git跟踪文件状态权利,但是文件并不会进入到Git仓库里,除非提交到仓库 [点这里返回刚在阅读位置](#仓库分支—-查看仓库时候,第一行”On branch XXX”是什么【见最下方补充

60430

「机器学习」DVC:面向机器学习项目的开源版本控制系统

完整代码和数据来源有助于跟踪每个ML模型完整演化。这保证了再现性,并使其易于实验之间来回切换。 ML实验管理 利用Git分支全部功能尝试不同想法,而不是代码草率文件后缀和注释。...使用自动度量跟踪来导航,而不是使用纸张和铅笔。 DVC被设计成保持分支像Git一样简单和快速-无论数据文件大小如何。除了一流市民指标和ML管道,这意味着一个项目有更干净结构。...比较想法和挑选最好很容易。中间工件缓存可以加快迭代速度。 部署与协作 使用push/pull命令将一致ML模型、数据和代码包移动到生产、远程机器或同事计算机,而不是临时脚本。...创建尽可能多实验,瞬间来回切换,并保存所有尝试历史记录。 度量跟踪 指标是DVC一等公民。DVC包含一个命令,用于列出所有分支以及度量值,以跟踪进度或选择最佳版本。...ML管道框架 DVC有一种内置方式,可以将ML步骤连接到DAG,并端到端地运行整个管道。DVC处理中间结果缓存,如果输入数据或代码相同,则不会再次运行步骤。

1.5K10

WorkManager用法

如果这些api没有被正确使用,则可能导致消耗大量电量。WorkManager为应用程序那些不需要及时完成任务提供了一个统一解决方案,以便在设备电量和用户体验间达到一个比较好平衡。...WorkManager有三个重要特点,分别如下:   1.针对是不需要及时完成任务   2.保证任务一定被执行   3.兼容范围广,最低能兼容API Level14 二.WorkManager基本使用方法...doWork()方法执行 Log.i("OneTimeWorkRequest","Work Start!")...setInitialDelay(10,TimeUnit.SECONDS)//触发条件满足后,延迟10s执行任务 .addTag("test")//为任务设置tag标签,之后可以通过标签跟踪任务状态...()     (3)WorkManager.getWokInfosForUniqueWork()     如果希望实时获取任务状态,这三个方法还有对应LiveData方法方法后面加上LiveData

37830

Android 12 中使用 WorkManager

因此,我们 WorkManager 2.7 做出了部分改进,使得应用在遵守后台限制同时可以轻松地安排重要任务。...通过 加急任务,应用可以轻松地运行 耗时短且高优先级任务,例如发送一条聊天信息或者往社交网络上传一张图片。推荐使用加急任务来启动需要立即执行且即使用户将应用放至后台也能继续执行任务。...请注意,我们调用 setExpedited() 方法时传入了 OutOfQuotaPolicy 参数。...加急任务很重要,但并不意味着它可以一直执行,您需要将配额视为执行加急任务时间限制。 WorkManager 2.7 是向后兼容可以 Android 12 之前系统上运行。...您可以官方发布说明查看 WorkManager 每个版本变更及优化详细列表,以及 WorkManager 2.6 和 WorkManager 2.7 发布说明。

70640
领券