В чем разница между Worker и ListenableWorker в WorkManager? - PullRequest
0 голосов
/ 19 февраля 2019

Я перехожу по этой ссылке Миграция из Firebase JobDispatcher в WorkManager ,

Я обнаружил, что есть Worker и ListenableWorker , где использоватьэти оба?какое-либо преимущество при использовании любого из них?

Работник:

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.
  }
}

1 Ответ

0 голосов
/ 20 февраля 2019

Worker s запускаются синхронно в фоновом потоке.Ожидается, что ListenableWorker будут работать асинхронно - они вызываются в основном потоке, и вы должны предлагать все потоки (например, перемещение их в фоновый поток).Worker проще и, как ожидается, станут основным строительным блоком вашего приложения.Вы можете прочитать больше о них здесь:

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

Если вам интересно, вы также можете проверить CoroutineWorker и RxWorker.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...