根據預設,WorkManager 會在應用程式啟動時自動設定,使用適合大多數應用程式的合理選項。如要進一步控制 WorkManager 管理和排程作業的方式,您可以藉由自行初始化 WorkManager 來自訂 WorkManager 設定。
隨選初始化
隨選初始化可讓您僅在需要該元件時建立 WorkManager,而非每次應用程式啟動時建立。這樣做會將 WorkManager 從關鍵的啟動路徑移出,並提升應用程式啟動效能。如要使用隨選初始化功能:
移除預設初始化器
如要提供自己的設定,您必須先移除預設初始化器。如要這麼做,請使用合併規則 tools:node="remove"
更新 AndroidManifest.xml
。
自 WorkManager 2.6 開始,在 AppManager 中內部使用 App Startup。如要提供自訂初始化器,您必須移除 androidx.startup
節點。
如果您的應用程式沒有使用 App 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>
如果使用 WorkManager 2.6 以下版本,請移除
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 會呼叫應用程式的自訂 getWorkManagerConfiguration()
方法以探索其 Configuration
。(您不需要自行呼叫 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 之前自訂初始化
針對 WorkManager 2.1.0 之前的版本,有兩種初始化選項。在大部分情況下,預設初始化就是您所需要的。如要更精確地控管 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()
參考說明文件。