WorkManager使用入门

方法一:For Safe args, add the following classpath in your top level build.gradle file

buildscript {
    repositories {
        google()
    }
    dependencies {
        classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0-alpha06"
    }
}

And in your app or module build.gradle file

apply plugin: "androidx.navigation.safeargs"

 

方法2:

WorkManager requires compileSdk version 28 or higher.

配置添加: 

dependencies {
    def work_version = "1.0.0-alpha10"

    implementation "android.arch.work:work-runtime:$work_version" // use -ktx for Kotlin

    // optional - Firebase JobDispatcher support
    implementation "android.arch.work:work-firebase:$work_version"

    // optional - Test helpers
    androidTestImplementation "android.arch.work:work-testing:$work_version"
}

使用方法

public class Work extends Worker {


    public Work(@NonNull Context context, @NonNull WorkerParameters workerParams) {
        super(context, workerParams);
    }

    @NonNull
    @Override
    public Result doWork() {
        Log.e("----doWord", "doWork: " );
        return Result.SUCCESS;
    }
}

在Activity调用它,这是一个一次性任务

OneTimeWorkRequest request=new OneTimeWorkRequest.Builder(Work.class).build();
WorkManager.getInstance().enqueue(request);

成功打印log,

现在你可以给他添加约束,让他在限定条件下运行:

 Constraints myConstraints = new Constraints.Builder()
                .setRequiredNetworkType(NetworkType.CONNECTED)  // 网络状态
                .setRequiresBatteryNotLow(true)                 // 不在电量不足时执行
                .setRequiresCharging(true)                      // 在充电时执行
                .setRequiresStorageNotLow(true)                 // 不在存储容量不足时执行
               // .setRequiresDeviceIdle(true)                    // 在待机状态下执行,需要 API 23
                // Many other constraints are available, see the
                // Constraints.Builder reference
                .build();

// ...then create a OneTimeWorkRequest that uses those constraints
        OneTimeWorkRequest compressionWork =
                new OneTimeWorkRequest.Builder(Work.class)
                        .setConstraints(myConstraints)
                        .build();

 

取消任务 

UUID compressionWorkId = request.getId();
WorkManager.getInstance().cancelWorkById(compressionWorkId);

 这是一个有标记的任务

OneTimeWorkRequest cacheCleanupTask =
        new OneTimeWorkRequest.Builder(Work.class)
                //.setConstraints(myConstraints)
                .addTag("cleanup")
                .build();
WorkManager.getInstance().enqueue(cacheCleanupTask);//开始一个有标记的任务
WorkManager.getInstance().getStatusesByTag("cleanup");//找到标记的任务
WorkManager.getInstance().cancelAllWorkByTag("cleanup");//取消该标记的所有任务

 定时任务:

 Constraints myConstraints = new Constraints.Builder()
                .setRequiredNetworkType(NetworkType.CONNECTED)  // 网络状态
                .setRequiresBatteryNotLow(true)                 // 不在电量不足时执行
                .setRequiresCharging(true)                      // 在充电时执行
                .setRequiresStorageNotLow(true)                 // 不在存储容量不足时执行
                .build();

        PeriodicWorkRequest build = new PeriodicWorkRequest.Builder(Work.class, 15, TimeUnit.MINUTES).setConstraints(myConstraints).build();
 
        WorkManager.getInstance().enqueue(build);
  • 定时任务有最小间隔时间的限制,是 15 分钟
  • 只有程序运行时,任务才会得到执行
  • 无法拉起 Activity
  • 如下图设置了1秒执行一次但是还是等15分钟才会显示log

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值