Я новичок в работе менеджера ... У меня есть сценарий в моем приложении, где мне нужно периодически выполнять резервное копирование данных на сервер с помощью REST API. Кажется, что менеджер работы является идеальным решением для этого (предложите мне, если есть какие-либо другие :)).
Из документов говорят, что ListenableWorker может решить мою проблему. Поэтому я реализовал его и вызвал его с помощью OneTimeWorkRequest (просто для проверки его следует использовать PeriodicWorkRequest в надлежащем случае).
Но проблема в том, что он не вызывает работника :(.
Может кто-нибудь, пожалуйста, помогите мне решить эту проблему. Что мне не хватает ??
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;
});
}
}