gpt4 book ai didi

java - WorkManager 中的 Worker 和 ListenableWorker 有什么区别?

转载 作者:行者123 更新时间:2023-11-30 10:06:14 24 4
gpt4 key购买 nike

我通过这个链接 Migrating from Firebase JobDispatcher to WorkManager ,

我发现有WorkerListenableWorker,这两个用在什么地方?使用其中任何一个有什么好处吗?

worker :

import android.content.Context;
import androidx.work.Data;
import androidx.work.ListenableWorker.Result;
import androidx.work.Worker;
import androidx.work.WorkerParameters;

class MyWorker extends Worker {

public MyWorker(@NonNull Context appContext, @NonNull WorkerParameters params) {
super(appContext, params);
}

@Override
public ListenableWorker.Result doWork() {
// Do your work here.
Data input = getInputData();

// Return a ListenableWorker.Result
Data outputData = new Data.Builder()
.putString(“Key”, “value”)
.build();
return Result.success(outputData);
}

@Override
public void onStopped() {
// Cleanup because you are being stopped.
}
}

ListenableWorker:

import android.content.Context;
import androidx.work.ListenableWorker;
import androidx.work.ListenableWorker.Result;
import androidx.work.WorkerParameters;
import com.google.common.util.concurrent.ListenableFuture;

class MyWorker extends ListenableWorker {

public MyWorker(@NonNull Context appContext, @NonNull WorkerParameters params) {
super(appContext, params);
}

@Override
public ListenableFuture<ListenableWorker.Result> startWork() {
// Do your work here.
Data input = getInputData();

// Return a ListenableFuture<>
}

@Override
public void onStopped() {
// Cleanup because you are being stopped.
}
}

最佳答案

Worker 在后台线程上同步运行。 ListenableWorker 应异步运行 - 它们在主线程上调用,您应该提供所有线程(例如将它们移至后台线程)。 Worker 更简单,预计将成为您应用程序的基本构建 block 。您可以在这里阅读更多关于它们的信息:

https://developer.android.com/reference/androidx/work/Worker https://developer.android.com/reference/androidx/work/ListenableWorker

如果你有兴趣,也可以看看CoroutineWorkerRxWorker

关于java - WorkManager 中的 Worker 和 ListenableWorker 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54762658/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com