Secara default, WorkManager otomatis mengonfigurasi sendiri saat aplikasi Anda dimulai, dengan menggunakan opsi wajar yang cocok untuk sebagian besar aplikasi. Jika Anda memerlukan kontrol lebih tentang cara WorkManager mengelola dan menjadwalkan pekerjaan, Anda dapat menyesuaikan konfigurasi WorkManager dengan memulai WorkManager sendiri.
Inisialisasi On Demand
Inisialisasi on demand memungkinkan Anda membuat WorkManager hanya saat komponen tersebut diperlukan, bukan setiap kali aplikasi dimulai. Dengan begitu, WorkManager akan dipindah dari jalur startup kritis, sehingga meningkatkan performa startup aplikasi. Untuk menggunakan inisialisasi on demand:
Hapus penginisialisasi default
Untuk menyediakan konfigurasi Anda sendiri, Anda harus menghapus penginisialisasi default
terlebih dahulu. Untuk melakukannya, update
AndroidManifest.xml
menggunakan aturan penggabungan tools:node="remove"
.
Mulai WorkManager 2.6, Startup Aplikasi digunakan
secara internal di dalam WorkManager. Untuk memberikan penginisialisasi kustom, Anda harus
menghapus node androidx.startup
.
Anda dapat menghapus Startup Aplikasi sepenuhnya jika tidak menggunakannya di aplikasi Anda.
<!-- If you want to disable android.startup completely. -->
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove">
</provider>
Jika tidak, cukup hapus node 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>
Saat menggunakan versi WorkManager yang lebih lama dari 2.6, hapus
Sebagai gantinya, workmanager-init
:
<provider
android:name="androidx.work.impl.WorkManagerInitializer"
android:authorities="${applicationId}.workmanager-init"
tools:node="remove" />
Untuk mempelajari cara menggunakan aturan penggabungan dalam manifes lebih lanjut, lihat dokumentasi tentang menggabungkan beberapa file manifes.
Mengimplementasikan Configuration.Provider
Minta class Application
Anda mengimplementasikan
Configuration.Provider
dan menyediakan implementasi Anda sendiri atas
Configuration.Provider.getWorkManagerConfiguration
.
Saat Anda perlu menggunakan WorkManager, pastikan untuk memanggil metode
WorkManager.getInstance(Context)
WorkManager memanggil metode getWorkManagerConfiguration()
kustom aplikasi Anda untuk
menemukan Configuration
miliknya. (Anda tidak perlu memanggil
WorkManager.initialize
sendiri.)
Berikut adalah contoh implementasi getWorkManagerConfiguration()
kustom:
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(); } }
Inisialisasi kustom sebelum WorkManager 2.1.0
Untuk WorkManager versi sebelum 2.1.0, ada dua opsi inisialisasi. Umumnya, Anda hanya perlu menggunakan inisialisasi default. Untuk kontrol WorkManager yang lebih akurat, Anda dapat menentukan konfigurasi sendiri.
Inisialisasi default
WorkManager menggunakan ContentProvider
kustom untuk menginisialisasi sendiri saat aplikasi
Anda dimulai. Kode ini berada di androidx.work.impl.WorkManagerInitializer
class internal,
dan menggunakan Configuration
default.
Penginisialisasi default otomatis digunakan,
kecuali jika Anda menonaktifkannya secara eksplisit.
Penginisialisasi default cocok untuk sebagian besar aplikasi.
Inisialisasi kustom
Jika Anda ingin mengontrol proses inisialisasi, Anda harus menonaktifkan penginisialisasi default, lalu menentukan konfigurasi kustom sendiri.
Setelah penginisialisasi default dihapus, Anda dapat menginisialisasi WorkManager secara 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);
Pastikan inisialisasi singleton
WorkManager
berjalan dalam
Application.onCreate()
atau dalam ContentProvider.onCreate()
.
Untuk daftar lengkap penyesuaian yang tersedia, lihat
dokumentasi referensi
Configuration.Builder()
.