O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Personalizar a configuração e a inicialização do WorkManager

Por padrão, o WorkManager é configurado automaticamente quando seu app é iniciado, usando opções razoáveis e adequadas para a maioria dos apps. Se você precisa de mais controle de como o WorkManager gerencia e programa o trabalho, pode personalizar a configuração do WorkManager inicializando-o.

A maneira mais flexível de oferecer uma inicialização personalizada para o WorkManager é usar a inicialização sob demanda, disponível no WorkManager 2.1.0 e em versões mais recentes. As outras opções serão discutidas posteriormente.

Inicialização sob demanda

A inicialização sob demanda permite criar o WorkManager somente quando esse componente é necessário, em vez de fazer isso sempre que o app é iniciado. Isso afasta o WorkManager do caminho crítico de inicialização, melhorando o desempenho da inicialização do app. Para usar a inicialização sob demanda:

Remova o inicializador padrão

Para fornecer sua própria configuração, primeiro remova o inicializador padrão. Para fazer isso, atualize AndroidManifest.xml usando a regra de combinação tools:node="remove":

<provider
    android:name="androidx.work.impl.WorkManagerInitializer"
    android:authorities="${applicationId}.workmanager-init"
    tools:node="remove" />

Para mais informações sobre como usar regras de combinação, consulte a documentação sobre como Integrar vários arquivos de manifesto.

Implementar Configuration.Provider

Faça com que a classe Application implemente a interface Configuration.Provider e forneça sua própria implementação de Configuration.Provider.getWorkManagerConfiguration(). Quando você precisar usar o WorkManager, chame o método WorkManager.getInstance(Context). O WorkManager chama o método getWorkManagerConfiguration() personalizado do seu app para descobrir a Configuration dele. Você não precisa chamar WorkManager.initialize().

Veja aqui um exemplo de implementação 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();
    }
}

Inicialização personalizada antes do WorkManager 2.1.0

Para versões do WorkManager anteriores à versão 2.1.0, há duas opções de inicialização. Na maioria dos casos, a inicialização padrão é tudo o que você precisa. Para ter um controle mais preciso do WorkManager, você pode especificar uma configuração própria.

Inicialização padrão

O WorkManager usa um ContentProvider personalizado para se inicializar quando o app é iniciado. Esse código reside na classe interna androidx.work.impl.WorkManagerInitializer e usa a Configuration padrão. O inicializador padrão é usado de forma automática, a menos que você desative-o explicitamente. O inicializador padrão é adequado para a maioria dos apps.

Inicialização personalizada

Se você quer controlar o processo de inicialização, desative o inicializador padrão e defina sua configuração personalizada.

Depois que o inicializador padrão é removido, você pode inicializar o WorkManager manualmente:

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);

Garanta que a inicialização do singleton WorkManager seja executada em Application.onCreate() ou em um ContentProvider.onCreate().

Para ver a lista completa de personalizações disponíveis, consulte a documentação de referência de Configuration.Builder() .