기본적으로 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() }
자바
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)
자바
// 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()
참조 문서를 확인하세요.