Вызов ListenableWorker не затрагивает startWork () - PullRequest
0 голосов
/ 17 июня 2019

Я новичок в работе менеджера ... У меня есть сценарий в моем приложении, где мне нужно периодически выполнять резервное копирование данных на сервер с помощью 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;
        });
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...