Bergabunglah bersama kami di ⁠#Android11: The Beta Launch Show pada tanggal 3 Juni!

Konfigurasi dan Inisialisasi WorkManager Kustom

Secara default, WorkManager otomatis mengonfigurasi sendiri saat aplikasi Anda dimulai, 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.

WorkManager 2.1.0 dan yang lebih baru

WorkManager 2.1.0 memiliki beberapa cara untuk mengonfigurasi WorkManager. Cara paling fleksibel untuk memberikan inisialisasi kustom untuk WorkManager adalah dengan menggunakan inisialisasi on demand, yang tersedia pada WorkManager 2.1.0 dan yang lebih baru. Opsi lainnya akan dibahas nanti.

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 menyempurnakan performa startup aplikasi. Untuk menggunakan inisialisasi on demand:

Menghapus 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":

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

Untuk mempelajari lebih lanjut penggunaan aturan penggabungan dalam manifes, lihat dokumentasi tentang menggabungkan beberapa file manifes.

Mengimplementasikan Configuration.Provider

Minta class Application mengimplementasikan antarmuka Configuration.Provider, dan menyediakan implementasi Configuration.Provider.getWorkManagerConfiguration() Anda sendiri.

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 Configuration.Builder()
                    .setMinimumLoggingLevel(android.util.Log.INFO)
                    .build();
        }
    }
    

WorkManager 2.0.1 dan yang lebih lama

Untuk versi lama dari WorkManager, ada dua opsi inisialisasi:

Inisialisasi default
Umumnya Anda hanya perlu menggunakan inisialisasi default.
Inisialisasi kustom
Untuk kontrol WorkManager yang lebih akurat, Anda dapat menentukan konfigurasi Anda sendiri.

Inisialisasi default

WorkManager menggunakan ContentProvider kustom untuk menginisialisasi sendiri saat aplikasi Anda dimulai. Kode ini berada di class androidx.work.impl.WorkManagerInitializer internal, dan menggunakan Configuration default. Penginisialisasi default secara otomatis digunakan kecuali 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 Anda 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);
    

singleton WorkManager. Pastikan inisialisasi berjalan dalam Application.onCreate() atau dalam ContentProvider.onCreate().

Untuk daftar lengkap penyesuaian yang tersedia, lihat dokumentasi referensi Configuration.Builder().