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á
Thay vào đó, hãy 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 phương thức
Configuration.Provider
giao diện người dùng và cung cấp cách triển khai của riêng bạn
Configuration.Provider.getWorkManagerConfiguration
.
Khi bạn cần sử dụng WorkManager, hãy nhớ gọi phương thức này
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()
.