gpt4 book ai didi

java - 如何将参数传递给 Workmanager DoWork 方法

转载 作者:行者123 更新时间:2023-12-04 08:53:06 24 4
gpt4 key购买 nike

我想计划任务在 24 小时后从数据库中删除

public class WorkManager extends Worker {

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

@NonNull
@Override
public Result doWork() {
return null;
}}

我如何将要删除的任务作为参数传递给 DoWork 方法,就像这样......
public void deleteTask(Task task){
DataBaseHelper db = new DataBaseHelper(context);
db.deleteOne(task);
}

最佳答案

Worker class 仍然不支持自定义对象作为参数传入 Data .您可以做的是调整您的 deleteOne根据 id 删除任务的方法,并将这个要删除的 id 传递给 Worker .

  public static OneTimeWorkRequest create(String id) {
Data inputData = new Data.Builder()
.putString(TASK_ID, id)
.build();
return new OneTimeWorkRequest.Builder(SampleWorker.class)
.setInputData(inputData)
.setInitialDelay(24, TimeUnit.HOURS)
.build();
}

...

@NonNull
@Override
public Result doWork() {
String taskId = getInputData().getString(TASK_ID);

...
...
}
如果你还坚持要通过 Task作为您 Worker 的参数你可以试试
 public static OneTimeWorkRequest create(Task task) {
String strTask = new Gson().toJson(task);
Data inputData = new Data.Builder()
.putString(TASK, strTask)
.build();
return new OneTimeWorkRequest.Builder(SampleWorker.class)
.setInputData(inputData)
.setInitialDelay(24, TimeUnit.HOURS)
.build();
}

...

@NonNull
@Override
public Result doWork() {
String strTask = getInputData().getString(TASK);
Task task = new Gson().fromJson(strTask, Task.class);

...
...
}
build.gradle 中添加此依赖项为 Gson
implementation 'com.google.code.gson:gson:2.8.6'
如需更多信息和研究,请查看 here

关于java - 如何将参数传递给 Workmanager DoWork 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63985945/

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