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使用的主要内容,如果未能解决你的问题,请参考以下文章