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

2019-08-18  本文已影响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

上一篇下一篇

猜你喜欢

热点阅读