De manera predeterminada, WorkManager se configura automáticamente cuando se inicia tu app, y usa opciones aceptables y adecuadas para la mayoría de las apps. Si necesitas más control sobre el modo en que WorkManager administra y programa el trabajo, puedes personalizar la configuración de WorkManager inicializando WorkManager por tu cuenta.
Inicialización a pedido
La inicialización a pedido te permite crear WorkManager solo cuando se necesita ese componente, en lugar de cada vez que se inicia la app. Si haces esto, se quita WorkManager de la ruta de inicio crítica, lo que mejora el rendimiento de inicio de la app. Para usar la inicialización a pedido, haz lo siguiente:
Quita el inicializador predeterminado
Si quieres proporcionar tu propia configuración, primero debes quitar el inicializador predeterminado. Para hacerlo, actualiza AndroidManifest.xml
con la regla de combinación tools:node="remove"
.
A partir de WorkManager 2.6, el App Startup se usa internamente en WorkManager. Para proporcionar un inicializador personalizado, debes quitar el nodo androidx.startup
.
Si no usas App Startup en tu app, puedes quitarla por completo.
<!-- If you want to disable android.startup completely. -->
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove">
</provider>
De lo contrario, quita solo el 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>
Cuando uses una versión de WorkManager anterior a la 2.6, quita
workmanager-init
en su lugar:
<provider
android:name="androidx.work.impl.WorkManagerInitializer"
android:authorities="${applicationId}.workmanager-init"
tools:node="remove" />
Si deseas obtener más información acerca del uso de las reglas de combinación en tu manifiesto, consulta la documentación para combinar varios archivos de manifiesto.
Implementa Configuration.Provider
Haz que tu clase Application
implemente el
Configuration.Provider
y proporcionarás tu propia implementación de
Configuration.Provider.getWorkManagerConfiguration
Cuando necesites usar WorkManager, asegúrate de llamar al método.
WorkManager.getInstance(Context)
WorkManager llama al método getWorkManagerConfiguration()
personalizado de tu app para descubrir la Configuration
. (No es necesario que llames a WorkManager.initialize
).
Este es un ejemplo de una implementación personalizada de 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(); } }
Inicialización personalizada antes de WorkManager 2.1.0
Existen dos opciones de inicialización para las versiones de WorkManager anteriores a la versión 2.1.0. En la mayoría de los casos, solo necesitas la inicialización predeterminada. Para obtener un control más preciso de WorkManager, puedes especificar tu propia configuración.
Inicialización predeterminada
WorkManager usa un ContentProvider
personalizado para inicializarse cuando se inicia la app. Este código se encuentra en la clase interna androidx.work.impl.WorkManagerInitializer
y usa el Configuration
predeterminado.
Se usará automáticamente el inicializador predeterminado, a menos que lo inhabilites de manera explícita.
El inicializador predeterminado es adecuado para la mayoría de las apps.
Inicialización personalizada
Si deseas controlar el proceso de inicialización, debes inhabilitar el inicializador predeterminado y, luego, definir tu propia configuración personalizada.
Una vez que quites el inicializador predeterminado, puedes iniciar WorkManager de forma manual:
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);
Asegúrate de que la inicialización del singleton de WorkManager
se ejecute en Application.onCreate()
o en un ContentProvider.onCreate()
.
Para ver la lista completa de personalizaciones disponibles, consulta la documentación de referencia de Configuration.Builder()
.