Jetpack学习-8-WorkManager

2020-08-19  本文已影响0人  主音King

WorkManager是什么

运行可推迟的后台工作。根据设备API情况,自动选择JobScheduler或AlarmManager来实现后台任务,在应用推出之后还可以继续执行。
Worker任务的执行者,抽象类,需要执行的具体任务,需要实现doWork执行在单独的后台线程里。
doWork的返回值:

简单使用

引入WorkManager

dependencies {
    implementation 'androidx.work:work-runtime:2.4.0'
}

自定义Worker

public class UploadWorker extends Worker {
    private static final String TAG = "UploadWorker-";

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

    @NonNull
    @Override
    public Result doWork() {
        // 子线程
        Log.d(TAG, "doWork: " + (Looper.getMainLooper() == Looper.myLooper()));
        return Result.success();
    }
}

执行任务

public class WorkerActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_worker);

        OneTimeWorkRequest request = new OneTimeWorkRequest.Builder(UploadWorker.class).build();
        WorkManager.getInstance(getApplicationContext()).enqueue(request);
    }
}

原理

WorkManager管理任务请求和任务队列,WorkRequest加入任务队列。通过WorkManager来调度任务,分散系统资源负载。

上一篇 下一篇

猜你喜欢

热点阅读