Cấu hình và khởi chạy WorkManager tuỳ chỉnh

Theo mặc định, WorkManager sẽ tự động định cấu hình khi ứng dụng khởi động bằng cách sử dụng các tuỳ chọn hợp lý phù hợp với hầu hết các ứng dụng. Nếu cần thêm quyền kiểm soát về cách mà WorkManager quản lý và lên lịch hoạt động, bạn có thể tuỳ chỉnh cấu hình WorkManager bằng cách tự khởi chạy WorkManager.

Khởi chạy theo yêu cầu

Khởi chạy theo yêu cầu cho phép bạn tạo WorkManager chỉ khi cần đến thành phần đó, thay vì mỗi khi ứng dụng khởi động. Việc này sẽ di chuyển WorkManager ra khỏi đường dẫn khởi động quan trọng, giúp cải thiện hiệu suất khởi động ứng dụng. Để sử dụng khởi chạy theo yêu cầu, hãy:

Xoá trình khởi chạy mặc định

Để cung cấp cấu hình riêng, trước tiên bạn phải xoá trình khởi chạy mặc định. Để làm việc này, hãy cập nhật AndroidManifest.xml bằng quy tắc hợp nhất tools:node="remove".

Từ phiên bản WorkManager 2.6, tính năng Khởi động ứng dụng sẽ được sử dụng trong nội bộ WorkManager. Để cung cấp một trình khởi chạy tuỳ chỉnh, bạn cần xoá nút androidx.startup.

Nếu không dùng đến tính năng Khởi động ứng dụng, thì bạn có thể xoá hoàn toàn tính năng này.

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

Nếu có, thì chỉ xoá nút 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>

Khi sử dụng phiên bản WorkManager cũ hơn 2.6, hãy xoá workmanager-init:

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

Để tìm hiểu thêm về cách sử dụng quy tắc hợp nhất trong tệp kê khai, hãy xem tài liệu về cách hợp nhất nhiều tệp kê khai.

Triển khai Configuration.Provider

Yêu cầu lớp Application triển khai giao diện Configuration.Provider và cung cấp cách triển khai Configuration.Provider.getWorkManagerConfiguration() riêng của bạn. Khi cần sử dụng WorkManager, hãy gọi phương thức WorkManager.getInstance(Context). WorkManager sẽ gọi phương thức getWorkManagerConfiguration() tuỳ chỉnh của ứng dụng để khám phá Configuration của ứng dụng. (Bạn không cần phải tự thực hiện lệnh gọi WorkManager.initialize().)

Dưới đây là ví dụ về cách triển khai getWorkManagerConfiguration() tuỳ chỉnh:

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();
    }
}

Khởi chạy tuỳ chỉnh trước WorkManager 2.1.0

Đối với các phiên bản WorkManager trước phiên bản 2.1.0, có hai tuỳ chọn khởi chạy. Trong hầu hết trường hợp, quá trình khởi chạy mặc định là tất cả những gì bạn cần. Để điều khiển WorkManager chính xác hơn, bạn có thể chỉ định cấu hình của riêng mình.

Khởi chạy mặc định

WorkManager sử dụng ContentProvider tuỳ chỉnh để tự khởi chạy khi ứng dụng của bạn khởi động. Mã này nằm trong lớp nội bộ androidx.work.impl.WorkManagerInitializer và sử dụng Configuration mặc định. Trình khởi chạy mặc định sẽ tự động được sử dụng, trừ phi bạn vô hiệu hoá trình khởi chạy một cách rõ ràng. Trình khởi chạy mặc định phù hợp với hầu hết các ứng dụng.

Khởi chạy tuỳ chỉnh

Nếu muốn kiểm soát quá trình khởi chạy, bạn phải tắt trình khởi chạy mặc định, sau đó xác định cấu hình tuỳ chỉnh của riêng bạn.

Sau khi xoá trình khởi chạy mặc định, bạn có thể khởi chạy WorkManager theo cách thủ công:

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);

Đảm bảo việc khởi chạy singleton WorkManager đươc thực hiện trong Application.onCreate() hoặc trong ContentProvider.onCreate().

Để biết danh sách đầy đủ các tuỳ chỉnh có sẵn, hãy xem tài liệu tham khảo Configuration.Builder().