zoukankan      html  css  js  c++  java
  • Android 新架构组件 -- WorkManager

    Android WorkManager

    compile "android.arch.work:work-runtime:1.0.0-alpha02"
    

    继承Worker类并实现doWork()方法

    public class MineWorker extends Worker {
        @NonNull
        @Override
        public WorkerResult doWork() {
            LogUtils.i("MineWorker--doWork");
            return WorkerResult.SUCCESS;
        }
    }
    

    想要该Worker执行,需要调用WorkManager将该Worker添加到队列中

    WorkManager workManager = WorkManager.getInstance();
            OneTimeWorkRequest oneTimeWorkRequest = new OneTimeWorkRequest.Builder(MineWorker.class).build();
            workManager.enqueue(oneTimeWorkRequest);
    

    结果输出:

    MineWorker--doWork

    在手机充电时,并且有网的情况下执行某个任务:

    //        在手机充电时,并且有网的情况下执行某个任务
            Constraints constraints = new Constraints.Builder()
                    .setRequiredNetworkType(NetworkType.CONNECTED)
                    .setRequiresCharging(true)
                    .build();
            OneTimeWorkRequest constraintsOneTimeWorkRequest1 = new OneTimeWorkRequest.Builder(MineWorker.class).setConstraints(constraints).build();
            workManager.enqueue(constraintsOneTimeWorkRequest1);
    

    顺序的去执行不同的OneTimeWorker :

    //        OneTimeWorker顺序执行
            OneTimeWorkRequest workA = new OneTimeWorkRequest.Builder(MineWorker.class).build();
            OneTimeWorkRequest workB = new OneTimeWorkRequest.Builder(MineWorker.class).build();
            OneTimeWorkRequest workC = new OneTimeWorkRequest.Builder(MineWorker.class).build();
            OneTimeWorkRequest workD = new OneTimeWorkRequest.Builder(MineWorker.class).build();
            OneTimeWorkRequest workE = new OneTimeWorkRequest.Builder(MineWorker.class).build();
            WorkContinuation chain1 = WorkManager.getInstance()
                    .beginWith(workA)
                    .then(workB);
            WorkContinuation chain2 = WorkManager.getInstance()
                    .beginWith(workC)
                    .then(workD);
            WorkContinuation chain3 = WorkContinuation
                    .combine(chain1, chain2)
                    .then(workE);
            chain3.enqueue();
    

    定期的去执行某一个worker

    //        定期执行
            Constraints constraints = new Constraints.Builder()
                    .setRequiredNetworkType(NetworkType.CONNECTED)
                    .setRequiresCharging(true)
                    .build();
            PeriodicWorkRequest periodicWorkRequest = new PeriodicWorkRequest
                    .Builder(MineWorker.class, 3, TimeUnit.SECONDS)
                    .setConstraints(constraints)
                    .build();
            workManager.enqueue(periodicWorkRequest);
    
  • 相关阅读:
    网页布局——table布局
    Flex 布局——语法属性详解
    CSS实现垂直居中的几种方法
    svn:冲突(<<<<<<.mine ==== >>>>>>.xxxx)
    mysql:4种时间类型
    js:"use strict"; 严格模式
    js函数的Json写法
    spring 官方文档
    mybatis技术文章
    java:可变参数(转载)
  • 原文地址:https://www.cnblogs.com/androidsuperman/p/10210791.html
Copyright © 2011-2022 走看看