Per impostazione predefinita, WorkManager si configura automaticamente all'avvio dell'app. usando opzioni ragionevoli adatte alla maggior parte delle app. Se hai bisogno di più spazio regolare il funzionamento delle pianificazioni e della gestione da parte di WorkManager, puoi della configurazione di WorkManager inizializzando WorkManager autonomamente.
Inizializzazione on demand
L'inizializzazione on demand consente di creare WorkManager solo quando tale componente è anziché a ogni avvio dell'app. Questa operazione disattiva WorkManager il tuo percorso di avvio critico, migliorando le prestazioni dell'avvio dell'app. Per utilizzare on demand Inizializzazione:
Rimuovi l'inizializzazione predefinito
Per fornire la tua configurazione, devi prima rimuovere quella predefinita
come inizializzatore. Per farlo, aggiorna
AndroidManifest.xml
usando la regola di unione tools:node="remove"
.
Da WorkManager 2.6, viene utilizzata l'avvio di app
all'interno di WorkManager. Per fornire un inizializzatore personalizzato,
rimuovi il nodo androidx.startup
.
Se non utilizzi l'opzione Avvio app nell'app, puoi rimuoverla completamente.
<!-- If you want to disable android.startup completely. -->
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove">
</provider>
In caso contrario, rimuovi solo il nodo WorkManagerInitializer
.
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="merge">
<!-- If you are using androidx.startup to initialize other components -->
<meta-data
android:name="androidx.work.WorkManagerInitializer"
android:value="androidx.startup"
tools:node="remove" />
</provider>
Se utilizzi una versione di WorkManager precedente alla 2.6, rimuovi
workmanager-init
invece:
<provider
android:name="androidx.work.impl.WorkManagerInitializer"
android:authorities="${applicationId}.workmanager-init"
tools:node="remove" />
Per ulteriori informazioni sull'utilizzo delle regole di unione nel file manifest, consulta la documentazione su unione di più file manifest.
Implementazione del provider di configurazione
Chiedi alla tua classe Application
di implementare il
Configuration.Provider
e fornire la tua implementazione
Configuration.Provider.getWorkManagerConfiguration
.
Quando devi utilizzare WorkManager, assicurati di chiamare il metodo
WorkManager.getInstance(Context)
WorkManager chiama il metodo getWorkManagerConfiguration()
personalizzato della tua app a
scopri Configuration
. (Non è necessario chiamare
WorkManager.initialize
tu stesso.
Di seguito è riportato un esempio di implementazione personalizzata di getWorkManagerConfiguration()
:
Kotlin
class MyApplication() : Application(), Configuration.Provider { override fun getWorkManagerConfiguration() = Configuration.Builder() .setMinimumLoggingLevel(android.util.Log.INFO) .build() }
Java
class MyApplication extends Application implements Configuration.Provider { @Override public Configuration getWorkManagerConfiguration() { return new Configuration.Builder() .setMinimumLoggingLevel(android.util.Log.INFO) .build(); } }
Inizializzazione personalizzata prima di WorkManager 2.1.0
Per le versioni di WorkManager precedenti alla 2.1.0, esistono due inizializzazione le opzioni di CPU e memoria disponibili. Nella maggior parte dei casi, inizializzazione predefinita tutto ciò di cui hai bisogno. Per un controllo più preciso di WorkManager, puoi specifica la tua configurazione.
Inizializzazione predefinita
WorkManager utilizza un ContentProvider
personalizzato per inizializzarsi quando l'app
. Questo codice si trova nella classe interna
androidx.work.impl.WorkManagerInitializer
e utilizza il valore predefinito
Configuration
Viene usato automaticamente l'inizializzazione predefinita, a meno che
disattivarlo esplicitamente.
L'inizializzatore predefinito è adatto alla maggior parte delle app.
Inizializzazione personalizzata
Se vuoi controllare il processo di inizializzazione, devi disattiva l'inizializzazione predefinita, e poi definisci la tua configurazione personalizzata.
Una volta rimosso l'inizializzazione predefinita, è possibile inizializzarla manualmente WorkManager:
Kotlin
// provide custom configuration val myConfig = Configuration.Builder() .setMinimumLoggingLevel(android.util.Log.INFO) .build() // initialize WorkManager WorkManager.initialize(this, myConfig)
Java
// provide custom configuration Configuration myConfig = new Configuration.Builder() .setMinimumLoggingLevel(android.util.Log.INFO) .build(); //initialize WorkManager WorkManager.initialize(this, myConfig);
Assicurati che l'inizializzazione
WorkManager
singleton viene eseguito
Application.onCreate()
o in un
ContentProvider.onCreate()
Per l'elenco completo delle personalizzazioni disponibili, vedi
Configuration.Builder()
documentazione di riferimento.