我是工作经理的新手...在我的应用程序中有一个场景,需要定期使用REST API将数据备份到服务器。看来,工作经理是一个完美的解决方案(如果还有其他建议,请告诉我)。
在文档中,他们说ListenableWorker可以解决我的问题。因此,我已经实现了它,并使用OneTimeWorkRequest调用了它(只是为了测试它,应该在适当的情况下使用PeriodicWorkRequest)。
但是问题在于它不会触发worker :(。 谁能帮我解决这个问题。我想念什么?
Constraints constraints = new Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build();
OneTimeWorkRequest request = new
OneTimeWorkRequest.Builder(SyncToServerWorker.class)
.setConstraints(constraints)
.build();
WorkManager.getInstance().enqueueUniqueWork("my-unique-name",
ExistingWorkPolicy.KEEP, request);
工人阶级
public abstract class SyncToServerWorker extends ListenableWorker {
private Context context;
public SyncToServerWorker(Context context, WorkerParameters params) {
super(context, params);
this.context = context;
}
@NonNull
@Override
public ListenableFuture<Result> startWork() {
return CallbackToFutureAdapter.getFuture(completer -> {
BaseResponse.Callback callback = new BaseResponse.Callback() {
@Override
public void onSuccess() {
completer.set(Result.success());
}
@Override
public void onFailure(String message) {
completer.setException(new Throwable(message));
}
};
DataManager.getInstance(context).syncOfflineData(callback);
return callback;
});
}
}