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);
    
  • 相关阅读:
    准备工作:安装Arduino驱动(Windows)
    关于osEye的URL设计
    Debian 6.0下安装Memcached
    准备工作:购买Arduino
    debian6.0安装后中文字体显示不正常的解决办法
    取消UL和OL符号以及padding和margin后恢复默认值的CSS
    linux中reboot、shutdown、halt等命令详细讲解
    IIS6中应用程序池和Web园,解决Session丢失问题
    [z]C# winForm 程序调用 Java WebService
    [z]HTMLTextBox
  • 原文地址:https://www.cnblogs.com/androidsuperman/p/10210791.html
Copyright © 2011-2022 走看看