JetPack之WorkerManager使用

Posted _H_JY

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JetPack之WorkerManager使用相关的知识,希望对你有一定的参考价值。

1.调用方法
//JetPack组件 WorkManager
//Gradle引入依赖:implementation "android.arch.work:work-runtime:1.0.0-alpha04"
//优点:任务一定会被执行,即使应用被关闭。不同Worker可以链式顺序执行。


//可传数据进Worker
Data.Builder builder = new Data.Builder();
builder.putString("name", "WorkManager");
Data data = builder.build();

//只需要执行一次的任务:
//        OneTimeWorkRequest request =
//                new OneTimeWorkRequest.Builder(MyWorker.class)
//                        .setInputData(data)
//                        .build();
//WorkManager.getInstance().enqueue(request);



//可选。添加约束条件,如有网络连接的时候执行
Constraints constraints = new Constraints.Builder()
        .setRequiredNetworkType(NetworkType.CONNECTED).build();

//.setRequiresBatteryNotLow(true)                 // 不在电量不足时执行
//      .setRequiresCharging(true)                      // 在充电时执行
//     .setRequiresStorageNotLow(true)                 // 不在存储容量不足时执行


//定时任务:有最小间隔时间的限制,不能小于 15 分钟
PeriodicWorkRequest request1 = new PeriodicWorkRequest
        .Builder(MyWorker.class, 16, TimeUnit.MINUTES)
        .setConstraints(constraints)
        .setInputData(data)
        .build();


//enqueueUniquePeriodicWork保证每次不会重复执行
WorkManager.getInstance()
        .enqueueUniquePeriodicWork("wk",ExistingPeriodicWorkPolicy.KEEP,request1);
        //.enqueue(request1);

2.Worker

public class MyWorker extends Worker {


    @NonNull
    @Override
    public Result doWork() {
        Context context = getApplicationContext();

        String name = getInputData().getString("name","");
        Log.i("TAG","workName->"+name);

        return Result.SUCCESS;
    }


}

以上是关于JetPack之WorkerManager使用的主要内容,如果未能解决你的问题,请参考以下文章

JetPack之WorkerManager使用

JetPack之WorkerManager使用

Android Jetpack之MVVM使用及封装

Android Jetpack之Lifecycles源码分析

Jetpack组件之Lifecycle使用与源码分析

Jetpack组件之Lifecycle使用与源码分析