美文网首页
【Android】【框架】【Jetpack】【Architect

【Android】【框架】【Jetpack】【Architect

作者: 徐乙_ | 来源:发表于2019-08-18 00:40 被阅读0次

    接入

    implementation "android.arch.work:work-firebase:1.0.0-alpha08"
    androidTestImplementation "android.arch.work:work-testing:1.0.0-alpha08"
    

    使用

    // 1、定义任务
    public class MyWorker extends Worker {
    
        @NonNull
        @Override
        public Result doWork() {
            String data = getInputData().getString("workerData");
            Log.i("MyWorker","doWork:"+data);
            return Result.SUCCESS;
        }
    }
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            // 1、执行时机
            Constraints mConstraints = new Constraints.Builder()
                    .setRequiresBatteryNotLow(true) //不在电量不足时执行
                    .setRequiresCharging(true) //在充电时执行
                    .setRequiresStorageNotLow(true) //不在存储容量不足时执行
                    .setRequiresDeviceIdle(true) //在待机状态执行
                    .build();
    
            // 2、数据
            Data data = new Data.Builder().putString("workerData","helloWorld").build();
    
            // 3、构建任务
            OneTimeWorkRequest request = new OneTimeWorkRequest.Builder(MyWorker.class)
                    .setInputData(data)
                    .setInitialDelay(5, TimeUnit.SECONDS)
                    .build();
    
            // 4、任务加入队列
            WorkManager.getInstance().enqueue(request);
        }
    }
    

    原理

    image.png image.png

    WorkManager中的任务运行在子线程中,WorkManager会选择根据设备的API版本使用适合的算法调用JobScheduler、Firebase JobDispatcher或者AlarmManager来执行任务

    优势

    WorkManager生命力顽强 ,无视应用退出、App重启,可以把一些逻辑放在这里得到执行,有点像IntentService,但是目前看来要比IntentService厉害得多
    甚至可以借助此工具,实现一些黑科技保活、拉活策略

    后记

    有什么写得错误、让人费解或遗漏的地方,希望可以不吝赐教,我会马上更改

    学习自

    https://blog.csdn.net/u013309870/article/details/86553531

    相关文章

      网友评论

          本文标题:【Android】【框架】【Jetpack】【Architect

          本文链接:https://www.haomeiwen.com/subject/nzplsctx.html