JetPack之WorkManger

一、WorkManger简介

1.1 作用

看google官网介绍,WorkManger旨在用于可延迟运行(不要求立即执行)并且在应用推出或者设备重启时能够可靠运行。看到这里感觉到了WorkManger似乎就是为了进程保活而诞生的,其实不然。

1.2 应用场景
(1)埋点上传
(2)非即时性上传和下载
(3)等等
在这里插入图片描述
试想为什么Google在有service的前提下,还会推出一个WorkManger呢?

1.3 优势

1、确保可以被执行,并且可以设置执行的限定条件(例如仅仅在有网络连接的时候才进行图片的上传);
2、同样受到系统后台任务的限制管理(如APP进入Doze Mode的时候,任务不会被执行);
3、任务可串联;例如执行任务A之前需要任务B或者C先进行完成;

1.4 三要素
和Navigation相似,WorkManager也有三要素:Work、WorkRequest、WorkManager。
(1)Work:继承Work类,将要做的事情放在继承类中,重写doWork方法,很好理解;
(2)WorkRequest:定义Work在后台该怎么做,做几次有WorkRequest决定,如OneTimeWorkRequest(执行一次)、PeriodicWorkRequest(重复执行);
(3)WorkManager:从字面上理解就是管理类,用于管理WorkReuqest。

二、使用方法

导入依赖

def work_version = "2.3.4"
implementation "androidx.work:work-runtime:$work_version"

定义MyWork继承Worker,重写doWork方法

public class MyWork extends Worker {
   
    public static final String TAG = MyWork.class.getSimpleName();
    private Context context;
    private WorkerParameters workerParams;

    public MyWork(@NonNull Context context, @NonNull WorkerParameters workerParams) {
   
        super(context, workerParams);
        this.context = context;
        this.workerParams = workerParams;
    }

    @NonNull
    @Override
    public Result doWork() {
   
        Log.e(TAG, "doWork: 后台任务执行了");

        // 接收Activity传递过来的数据
        final String dataString = workerParams.getInputData()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值