맞춤 WorkManager 구성 및 초기화

기본적으로 WorkManager는 앱이 시작될 때 대부분의 앱에 적합한 합리적인 옵션을 사용하여 자동으로 구성됩니다. WorkManager가 작업을 관리하고 예약하는 방법을 더 제어해야 하는 경우 WorkManager를 직접 초기화하여 WorkManager 구성을 맞춤설정할 수 있습니다.

주문형 초기화

주문형 초기화를 사용하면 앱이 시작될 때마다가 아니라 구성요소가 필요할 때만 WorkManager를 만들 수 있습니다. 이렇게 하면 WorkManager가 중요한 시작 경로에서 제외되어 앱 시작 성능이 향상됩니다. 주문형 초기화를 사용하려면 다음을 실행하세요.

기본 초기화 프로그램 삭제

자체 구성을 제공하려면 먼저 기본 초기화 프로그램을 삭제해야 합니다. 그렇게 하려면 병합 규칙 tools:node="remove"를 사용하여 AndroidManifest.xml을 업데이트하세요.

WorkManager 2.6부터 앱 시작은 WorkManager 내부에서 사용됩니다. 맞춤 이니셜라이저를 제공하려면 androidx.startup 노드를 삭제해야 합니다.

앱에서 앱 시작을 사용하지 않는 경우 완전히 삭제할 수 있습니다.

 <!-- If you want to disable android.startup completely. -->
 <provider
    android:name="androidx.startup.InitializationProvider"
    android:authorities="${applicationId}.androidx-startup"
    tools:node="remove">
 </provider>

그렇지 않은 경우 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>

2.6 이전의 WorkManager 버전을 사용하는 동안 대신 workmanager-init을 삭제합니다.

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

매니페스트에서 병합 규칙을 사용하는 방법에 관해 자세히 알아보려면 여러 매니페스트 파일의 병합에 관한 문서를 참고하세요.

Configuration.Provider 구현

Application 클래스에서 Configuration.Provider 인터페이스를 구현하도록 하고 Configuration.Provider.getWorkManagerConfiguration의 자체 구현을 제공합니다. WorkManager를 사용해야 하는 경우 WorkManager.getInstance(Context) 메서드를 호출해야 합니다. WorkManager에서 Configuration을 찾기 위해 앱의 맞춤 getWorkManagerConfiguration() 메서드를 호출합니다. (직접 WorkManager.initialize를 호출할 필요는 없습니다.)

다음은 맞춤 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();
    }
}

WorkManager 2.1.0 이전의 맞춤 초기화

2.1.0 이전의 WorkManager 버전에는 두 가지 초기화 옵션이 있습니다. 대부분의 경우 기본 초기화만 사용하면 됩니다. WorkManager를 더 정밀하게 제어하려면 자체 구성을 지정하면 됩니다.

기본 초기화

WorkManager는 앱이 시작할 때 맞춤 ContentProvider를 사용하여 초기화됩니다. 이 코드는 내부 클래스 androidx.work.impl.WorkManagerInitializer에 있으며 기본 Configuration을 사용합니다. 명시적으로 사용을 중지하지 않는 한 자동으로 기본 초기화 프로그램이 사용됩니다. 기본 초기화 프로그램은 대부분의 앱에 적합합니다.

맞춤 초기화

초기화 프로세스를 제어하려면 기본 초기화 프로그램을 사용 중지한 다음 자체 맞춤 구성을 정의해야 합니다.

기본 초기화 프로그램이 삭제된 후 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);

WorkManager 싱글톤의 초기화가 Application.onCreate() 또는 ContentProvider.onCreate()에서 실행되는지 확인합니다.

사용 가능한 맞춤설정의 전체 목록은 Configuration.Builder() 참조 문서를 확인하세요.