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