Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Cómo ejecutar subprocesos en RxWorker

Proporcionamos interoperabilidad entre WorkManager y RxJava2. Para comenzar, incluye la dependencia work-rxjava2 además de work-runtime en tu archivo de Gradle. Luego, en lugar de extender Worker, deberías extender RxWorker. Finalmente, anula el método RxWorker.createWork() para que se muestre un Single<Result> que indique el Result de la ejecución, como se indica a continuación:

    public class RxDownloadWorker extends RxWorker {

        public RxDownloadWorker(Context context, WorkerParameters params) {
            super(context, params);
        }

        @Override
        public Single<Result> createWork() {
            return Observable.range(0, 100)
                .flatMap { download("https://www.google.com") }
                .toList()
                .map { Result.success() };
        }
    }
    

Ten en cuenta que se llama a RxWorker.createWork() en el subproceso principal, pero el valor que se muestre estará suscrito en un subproceso en segundo plano de forma predeterminada. Puedes anular RxWorker.getBackgroundScheduler() para cambiar el subproceso de suscripción.

Cuando se detiene un RxWorker, se eliminan correctamente los Observer, por lo que no es necesario que controles las interrupciones de trabajo de ninguna manera especial.