Articles

Schedule tasks with WorkManager Parte di Android Jetpack.

WorkManager è un’API che rende facile la programmazione di compiti differibili e asincroni che dovrebbero essere eseguiti anche se l’applicazione esce o il dispositivo viene riavviato. L’API WorkManager è un sostituto adatto e raccomandato per tutte le precedenti API di programmazione in background di Android, compresi FirebaseJobDispatcher, GcmNetworkManager e Job Scheduler. WorkManager incorpora le caratteristiche dei suoi predecessori in un’API moderna e coerente che lavora di nuovo al livello API 14, pur essendo consapevole della durata della batteria.

Sotto il cofano WorkManager usa un servizio sottostante di dispacciamento dei lavori basato sui seguenti criteri:

If the device is running on API Level 23 or higher, JobScheduler is used. OnAPI Levels 14-22, GcmNetworkManager is chosen if it's available, otherwise, acustom AlarmManager and BroadcastReciever implementation is used as afallback.

Nota: Se la tua app punta ad Android 10 (livello API 29) o superiore, le chiamate API FirebaseJobDispatcher e GcmNetworkManager non funzioneranno più sui dispositivi con Android Marshmallow (6.0) o superiore. Segui le guide alla migrazione per FirebaseJobDispatcher e GcmNetworkManager come guida alla migrazione. Inoltre, vedi l’Unifying Background Task Scheduling onAndroidannouncement per maggiori informazioni riguardanti la loro deprecazione.

Caratteristiche

Oltre a fornire un’API più semplice e coerente, WorkManager ha una serie di altri vantaggi chiave, tra cui:

Work Constraints

Declarativamente definire le condizioni ottimali per il tuo lavoro da eseguire utilizzando WorkConstraints.(Per esempio, eseguire solo quando il dispositivo è Wi-Fi, quando il dispositivo è inattivo, o quando ha sufficiente spazio di memoria, ecc.)

Robust Scheduling

WorkManager ti permette di programmare il lavoro da eseguire una sola volta o ripetutamente usando finestre di programmazione flessibili. Il lavoro può essere anche etichettato e nominato, permettendovi di programmare lavoro unico e sostituibile e di monitorare o cancellare gruppi di lavoro insieme. Il lavoro programmato è memorizzato in un database SQLite gestito internamente e WorkManager si occupa di assicurare che questo lavoro persista e sia riprogrammato attraverso i riavvii del dispositivo. Inoltre, WorkManager aderisce alle caratteristiche di risparmio energetico e alle migliori pratiche come la modalità Doze, così non dovrete preoccuparvene.

Politica di riprova flessibile

A volte il lavoro fallisce. WorkManager offre politiche flessibili per i tentativi, inclusa una politica di backoff esponenziale configurabile.

Catenamento del lavoro

Per lavori complessi correlati, concatena singoli compiti di lavoro usando un’interfaccia fluida e naturale che ti permette di controllare quali pezzi vengono eseguiti in sequenza e quali in parallelo.

Kotlin

WorkManager.getInstance(...) .beginWith(listOf(workA,workB)) .then(workC) .enqueue()

Java

WorkManager.getInstance(...) .beginWith(Arrays.asList(workA, workB)) .then(workC) .enqueue();

Per ogni compito di lavoro, è possibile definire i dati di input e output per quel lavoro. Quando si concatenano i lavori, WorkManager passa automaticamente i dati di output da un compito di lavoro al successivo.

Interoperabilità con il threading

WorkManager si integra senza problemi con RxJava e Coroutines e fornisce la flessibilità per inserire le proprie API asincrone.

Utilizzare WorkManager per il lavoro differibile e affidabile

WorkManager è inteso per il lavoro differibile, cioè che non deve essere eseguito immediatamente e che deve essere eseguito in modo affidabile anche se l’applicazione esce o il dispositivo si riavvia. Per esempio:

  • Invio di log o analisi a servizi backend
  • Sincronizzazione periodica dei dati dell’applicazione con un server

WorkManager non è destinato al lavoro in background in-processo che può essere tranquillamente terminato se il processo dell’app se ne va o per lavori che richiedono un’esecuzione immediata. Si prega di rivedere la guida all’elaborazione in background per vedere quale soluzione soddisfa le vostre esigenze.

Iniziare

Guarda la Guida introduttiva per iniziare a usareWorkManager nella tua app.