Android架构组件JetPack之WorkManager完全解析(五),2021金三银四面试季

本文深入解析了Android架构组件WorkManager,包括Worker的doWork()方法的返回值类型,OneTimeWorkRequest和PeriodicWorkRequest的使用,以及如何设置约束条件。同时,介绍了WorkManager的多任务调度策略,如先后顺序执行和多路径执行。文章还提到了在使用WorkManager时可能遇到的问题及其解决方案,并强调了WorkManager在面试中的重要性。
摘要由CSDN通过智能技术生成

在上面的MyWorker实例中,继承了Worker 并且重写了doWork()方法,需要注意的是doWork()方法是有返回值Worker.Result的,可以在任务执行成功是返回Worker.Result.SUCCESS,在任务执行出现异常时返回Worker.Result.FAILURE
doWork()方法的返回值主要有三种
1、Worker.Result.SUCCESS 表示任务执行成功

2、Worker.Result.FAILURE 表示任务执行失败

3、Worker.Result.RETRY 通知WorkManager之后再尝试执行该任务

WorkRequest
WorkRequest要指定执行任务的Worker,也可以给WorkRequest加一些规则,比如说什么时候执行任务,任务执行一次还是多次,每一个WorkRequest都有一个自动产生的唯一ID,可以根据唯一ID获取对应任务的状态以及是否取消对应的任务。如下图WorkRequest有两个实现类如下图:

1、OneTimeWorkRequest 任务只执行一次

OneTimeWorkRequest myWorkRequest =
new OneTimeWorkRequest.Builder(MyWorker.class)
.build();
//将上面定义的MyWorker加入到OneTimeRequest.Builder方法中
WorkManager.getInstance().enqueue(myWorkRequest);//获取WorkManager实例并将WorkRequest进队

2、PeriodicWorkRequest
PeriodicWorkRequest重复执行任务,直到被取消才停止。首次执行是任务提交后立即执行或者满足所给的 Constraints条件。以后执行都会根据所给的时间间隔来执行。注意任务的执行可能会有延时,因为WorkManager会根据OS的电量进行优化。
假如设置的Periodic Work是24小时执行一次,有可能根据电池优化策略执行的过程如下:

1 | Jan 01, 06:00 AM
2 | Jan 02, 06:24 AM
3 | Jan 03, 07:15 AM
4 | Jan 04, 08:00 AM
5 | Jan 05, 08:00 AM
6 | Jan 06, 08:02 AM

由上面的执行时间可以看出,Perio

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值