WorkManager

WorkManager API 可輕鬆安排必須持續執行可延後的非同步工作。這些 API 可讓您建立工作,然後交給 WorkManager,以在達到工作限制時執行。
最近更新時間 穩定版 候選版 Beta 版 Alpha 版
2022 年 4 月 6 日 2.7.1 - - 2.8.0-alpha02

宣告依附元件

如要新增 WorkManager 的依附元件,您必須在專案中新增 Google Maven 存放區

在應用程式或模組的 build.gradle 檔案中,新增您需要的構件依附元件:

Groovy

dependencies {
    def work_version = "2.7.1"

    // (Java only)
    implementation "androidx.work:work-runtime:$work_version"

    // Kotlin + coroutines
    implementation "androidx.work:work-runtime-ktx:$work_version"

    // optional - RxJava2 support
    implementation "androidx.work:work-rxjava2:$work_version"

    // optional - GCMNetworkManager support
    implementation "androidx.work:work-gcm:$work_version"

    // optional - Test helpers
    androidTestImplementation "androidx.work:work-testing:$work_version"

    // optional - Multiprocess support
    implementation "androidx.work:work-multiprocess:$work_version"
}

Kotlin

dependencies {
    val work_version = "2.7.1"

    // (Java only)
    implementation("androidx.work:work-runtime:$work_version")

    // Kotlin + coroutines
    implementation("androidx.work:work-runtime-ktx:$work_version")

    // optional - RxJava2 support
    implementation("androidx.work:work-rxjava2:$work_version")

    // optional - GCMNetworkManager support
    implementation("androidx.work:work-gcm:$work_version")

    // optional - Test helpers
    androidTestImplementation("androidx.work:work-testing:$work_version")

    // optional - Multiprocess support
    implementation "androidx.work:work-multiprocess:$work_version"
}

如要進一步瞭解如何使用 Kotlin 擴充功能,請參閱 ktx 說明文件

如要進一步瞭解依附元件,請參閱新增建構依附元件一文。

意見回饋

您的意見有助於改善 Jetpack。如果您發現新問題,或是對這個程式庫有改進建議,請告訴我們。請先查看這個程式庫的現有問題,再建立新問題。如果要投票給現有問題,請按一下星號按鈕。

建立新問題

詳情請參閱 Issue Tracker 文件

2.8 版本

2.8.0-alpha02 版本

2022 年 4 月 6 日

androidx.work:work-*:2.8.0-alpha02 發布。2.8.0-alpha02 版本包含這些修訂版本。

API 變更

  • 現在可以直接建構限制條件,而不必使用建構工具,對 Kotlin 使用者來說相當便利。(Idc390b/137568653)
  • 新增了可查看 WorkManager 是否已完成初始化的功能。此外,我們也為程式庫開發人員增設了新的 getConfiguration() API,方便他們取得 WorkManager 在初始化時所用的設定。(I6eff3b/212300336)

2.8.0-alpha01 版本

2022 年 1 月 12 日

已釋出androidx.work:work-*:2.8.0-alpha012.8.0-alpha01 版本包含這些修訂版本。

API 變更

  • 已新增輔助方法 WorkQuery.fromStatesWorkQuery.fromUniqueWorkNamesWorkQuery.fromTags,以便直接建立 WorkQuery。(If48f2b/199919736)
  • 為未來的 SDK 新增實驗性 BuildCompat 方法 (Iafd82b/207528937)
  • 新增getForegroundInfoWorker。(Ic1ead)
  • 已新增輔助程式 WorkQuery.fromIds,以便直接透過 ID 建立 WorkQuery。(Ie5bdfb/199919736)
  • RxWorker 現已setForeground傳回Completable這個用法可以取代setForegroundInfoAsync會傳回ListenableFuture的 Google Ads 新帳戶重新申請驗證。(I85156)
  • RxJava 2 專用的 RxWorkergetForegroundInfo傳回Single這個用法可以取代getForegroundInfoAsync會傳回ListenableFuture的 Google Ads 新帳戶重新申請驗證。(I21c91b/203851459)。
  • RxJava 3 的 RxWorker 現在採用會傳回 SinglegetForegroundInfo,可取代會傳回 ListenableFuturegetForegroundInfoAsync。(I1ca8a)
  • RxWorker 現已setForeground傳回Completable這個用法可以取代setForegroundInfoAsync會傳回ListenableFuture的 Google Ads 新帳戶重新申請驗證。(I992a3, b/203851459)

修正錯誤

  • 使用 suspendCancellableCoroutine 時,取消 CoroutineScopeListenableFuture 的取消作業。(I77e63)

2.7 版本

2.7.1 版本

2021 年 11 月 17 日

已釋出androidx.work:work-*:2.7.12.7.1 版包含下列修訂版本。

修正錯誤

  • 使用 suspendCancellableCoroutine 時,CoroutineScope 的取消作業會套用到 ListenableFuture。(I77e63)
  • 一旦延遲工作要求標示為密集,系統就會立即擲回例外狀況。bef1762

2.7.0 版本

2021 年 10 月 13 日

已釋出androidx.work:work-*:2.7.02.7.0 版包含這些修訂版本。

自 2.6.0 版本以來的重要異動

  • WorkManager 推出了新的 WorkRequest.Builder.setExpedited(...) API,可協助處理 Android 12 中的前景服務限制。

  • 使用 setExpedited(...) 時,WorkManager 會於 Android 12 以上版本,將工作委派給 JobScheduler 中的加速工作,同時委派給前景服務,為先前的 Android 版本提供回溯相容性。

2.7.0-rc01 版本

2021 年 9 月 29 日

已釋出androidx.work:work-*:2.7.0-rc012.7.0-rc01 版本包含這些修訂版本。

這個版本與 androidx.work:work-*:2.7.0-beta01 相同。

2.7.0-beta01 版本

2021 年 9 月 1 日

已釋出androidx.work:work-*:2.7.0-beta012.7.0-beta01 版本包含這些修訂版本。

新功能

  • 初始化 WorkManager 時,減少多程序 SQLite 爭用情況。

API 變更

  • 由於 Android 12 (S) 的基礎平台 API 穩定,請移除 @ExperimentalExpeditedWork API。(aosp/1792806)

修正錯誤

  • 為未採用 getForegroundInfoAsync() 的加速工作工作者提供更好的錯誤訊息。(aosp/1809376)

2.7.0-alpha05 版本

2021 年 7 月 21 日

已釋出androidx.work:work-*:2.7.0-alpha052.7.0-alpha05 版本包含這些修訂版本。

這個版本也包含 WorkManager 2.6.0-beta02 版本的錯誤修正項目。

2.7.0-alpha04 版本

2021 年 6 月 2 日

已釋出androidx.work:work-*:2.7.0-alpha04

這個版本還包含 2.6.0-beta01 版本的變更內容。

API 變更

  • ListenableWorker.setForegroundAsync() 已淘汰,
  • 我們建議盡量使用 WorkRequest.Builder.setExpedited(...) API。為了更妥善地因應應用程式不受前景服務限制規範的情況,開發人員可以使用 ListenableWorker.setForegroundAsync() API。
  • 如果呼叫 ListenableWorker.setForegroundAsync(),則應用程式適用前景服務限制時,就會觸發 ForegroundServiceStartNotAllowedException

修正錯誤

  • 將加速工作重新安排後,這些工作就不會再加速。而會成為一般工作。

2.7.0-alpha03 版本

2021 年 4 月 21 日

已釋出androidx.work:work-*:2.7.0-alpha032.7.0-alpha03 版本包含這些修訂版本。

新功能

API 變更

2.7.0-alpha02 版本

2021年3月10日

已釋出androidx.work:work-*:2.7.0-alpha022.7.0-alpha02 版本包含這些修訂版本。

修正錯誤

  • 明確設定 PendingIntent 的可變動性,以修正指定 Android 12 時發生的當機問題。(b/180884673)

2.7.0-alpha01 版本

2021年2月18日

已釋出androidx.work:work-*:2.7.0-alpha012.7.0-alpha01 版本包含這些修訂版本。

新功能

  • WorkManager 推出全新的 WorkRequest.Builder.setExpedited(...) API,將 Android 12 的前景服務限制納入考量。

    應用程式在背景執行時,無法再啟動前景服務。因此,為了更妥善地支援先前與前景服務生命週期榜定的長期執行工作,應用程式可以將 WorkRequest 標示為 expedited (加急處理)。

    這個 API 會取代 setForegroundAsync(...) / setForeground(...) API (現已淘汰)。

    使用 setExpedited(...) 時,WorkManager 會委派 JobScheduler 的加速工作,從 Android 12 開始,同時將委派功能委派給前景服務,以便回溯相容於先前的 Android 版本,

API 變更

  • 支援加速 WorkRequest

2.6.0 版本

2.6.0 版本

2021 年 9 月 1 日

已釋出androidx.work:work-*:2.6.02.6.0 版包含這些修訂版本。

自 2.5.0 版本以來的重要異動

  • WorkManager 會使用 androidx.startup 來初始化 WorkManager。 如果使用tools:node="remove"(ContentProvider過去用來初始化 WorkManager,您必須改為執行下列步驟。

    <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>
    
    <!-- If you want to disable android.startup completely. -->
     <provider
                android:name="androidx.startup.InitializationProvider"
                android:authorities="${applicationId}.androidx-startup"
                tools:node="remove" />
    
  • 新增可支援任何程序的工作站。(Iaf200)

  • 已新增 RemoteCoroutineWorker,這是 RemoteListenableWorker 的實作,可繫結至遠端程序。(I30578)

2.6.0-rc01 版本

2021 年 8 月 4 日

已釋出androidx.work:work-*:2.6.0-rc012.6.0-rc01 版本包含這些修訂版本。

這個版本與 androidx.work:work-*:2.6.0-beta02 相同。

2.6.0-beta02 版本

2021 年 7 月 21 日

已釋出androidx.work:work-*:2.6.0-beta022.6.0-beta02 版本包含這些修訂版本。

修正錯誤

  • RemoteWorkManager現已與 RemoteWorkManagerService 解除繫結,以便 RemoteWorkManagerService 正確清理資料。aosp/1730694
  • RemoteListenableWorker現已與 RemoteWorkerService 解除繫結,以便 RemoteWorkerService 正確清理資料。aosp/1743817
  • ForceStopRunnable 現在只能在主要應用程式處理程序中執行。這是一個最佳化程序,可避免使用多個程序的應用程式資源爭用。aosp/1749180aosp/1761729

2.6.0-beta01 版本

2021 年 6 月 2 日

已釋出androidx.work:work-*:2.6.0-beta012.6.0-beta01 版本包含這些修訂版本。

本次更新包含幾項細微說明文件改善。此版本與 2.6.0-alpha02 大致相同。

2.6.0-alpha02 版本

2021 年 4 月 21 日

已釋出androidx.work:work-*:2.6.0-alpha022.6.0-alpha02 版本包含這些修訂版本。

新功能

  • 為支援任何程序的工作站提供支援。(Iaf200)

  • 已新增 RemoteCoroutineWorker,這是 RemoteListenableWorker 的實作,可繫結至遠端程序。(I30578)

API 變更

  • 新增 TEMPORARILY_UNMETERED 網路限制支援。(I08d5e)
  • setProgressAsync() 的多程序工作站支援。(Ib6d08)
  • 將「WorkManagerInitializer」設為公開,讓其他 androidx.startup.Initializer 可以當做依附元件使用。(I5ab11)

2.6.0-alpha01 版本

2021 年 3 月 24 日

已釋出androidx.work:work-*:2.6.0-alpha012.6.0-alpha01 版本包含這些修訂版本。

新功能

  • WorkManager 現已使用 androidx.startup 來初始化 WorkManager。 先前的設定是由androidx.work.impl.WorkManagerInitializer執行。(aosp/1608813)

    如果您過去是透過 tools:node="remove" 移除用於初始化程序生命週期的 ContentProvider,現在必須改用以下方式。

     <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.impl.WorkManagerInitializer"
            android:value="androidx.startup"
            tools:node="remove" />
     </provider>
    

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

API 變更

  • 新增 Result.getOutputData() API,可傳回 ListenableWorker 的 outputData。(Ie51e3)

修正錯誤

  • 為 OEM 錯誤新增解決方法,因為在使用 AlarmManager API 時,系統會擲回 SecurityException。(aosp/1587518)

2.5.0版本

2.5.0版本

2021 年 1 月 27 日

已釋出androidx.work:work-*:2.5.02.5.0 版包含這些修訂版本。

自 2.4.0 版以來的重大異動

  • 使用多個程序的應用程式適用的新的 :work:work-multiprocess 成果。這會將工作要求排程合併為單一程序,藉此提升效能。
  • 有時候,ActivityManager 無法為 JobService 執行個體執行個體化,以啟動工作。導致基礎工作因平台錯誤而遭到捨棄。WorkManager 現在可以確保當 Application 透過對著工作初始化時,每個 WorkRequest 都有備份工作。這可大幅提升工作執行可靠性。(b/172475041aosp/1489577)。
  • WorkManager 會縮短 WorkRequestWorkRequest 完成後追蹤的緩衝時間長度,以減少資料庫的成長。時間長度為 7 天前。縮減為 1 天 + keepResultsForAtLeast 持續時間。(aosp/1419708)
  • TestListenableWorkerBuilder 現在支援修訂後的類別 (適用於 ListenableWorker),以便簡化測試。(aosp/1443299b/169787349)
  • WorkManager 檢查器現已開放使用 Android Studio Arctic Fox 使用。

2.5.0-rc01 版本

2021 年 1 月 13 日

已釋出androidx.work:work-*:2.5.0-rc01版本 2.5.0-rc01 包含這些修訂版本。

修正錯誤

  • 已修正在使用 WorkQuery 式 API 後,實體在更新後無法正確失效 getWorkInfosLiveData 的錯誤。(aosp/1540566b/173769028)
  • 修正在少數情況下,資料庫交易未標示為成功的錯誤。這會導致部分 Motorola 裝置發生問題。(aosp/1535368b/175944460)
  • 已修正在取消從程序中解除繫結時略過 NoSuchElementException 的錯誤。(aosp/1530589)
  • 改善 ConstraintTrackingWorker 以停止在 ListenableWorker 已停止的情況下停止該服務。(aosp/1496844b/172946965)
  • 更新 androidx.work 程式庫以指定 Java 8 (Ibd2f2)

2.5.0-beta02 版本

2020年12月2日

已釋出androidx.work:work-*:2.5.0-beta022.5.0-beta02 版本包含這些修訂版本。

修正錯誤

  • 修正 androidx.work:work-multiprocess 的錯誤,讓 WorkManager 在嘗試繫結至指定程序時意外封鎖呼叫執行緒。(aosp/1475538)
  • 修正 PeriodicWorkRequest 無法正確核對的錯誤。(b/172475041aosp/1489577)。
  • 新增解決方案,可在使用 setForeground* API 時停用前景服務。(b/170924044aosp/1489901)。

2.5.0-beta01 版本

2020 年 10 月 28 日

已釋出androidx.work:work-*:2.5.0-beta012.5.0-beta01 版本包含這些修訂版本。

新功能

  • WorkManager 會自動調節處理中作業排程器可擷取的 WorkRequest 數量。要求仍以 FIFO 的順序執行。(aosp/1455228)
  • 當應用程式的資料儲存庫處於不良狀態時,WorkManager 會嘗試還原。(aosp/1463103)

修正錯誤

  • ListenableWorker 被中斷時,立即標記 ENQUEUED,以便之後重新安排時間。(aosp/1455618b/170273988)。

2.5.0-alpha03 版本

2020 年 10 月 14 日

已釋出androidx.work:work-*:2.5.0-alpha032.5.0-alpha03 版本包含這些修訂版本。

API 變更

  • TestListenableWorkerBuilderTestWorkerBuilder 不會使用原始類型。(I883adb/169787349)

修正錯誤

  • 使用 ApplicationInfo 來判斷預設應用程式程序的名稱。(b/168716641aosp/1429950)
  • 修正 RemoteWorkManagerRemoteWorkContinuation 的顯示規則。這些 API 不再標示為 @Restricted。(aosp/1432091)
  • 修正 :work:work-multiprocess 的保護措施規則。(aosp/1432091)
  • 改善繫結於前景服務的長時間工作生命週期通知生命週期。(b/168502234aosp/1431331)。

2.5.0-alpha02 版本

2020 年 9 月 16 日

已釋出androidx.work:work-*:2.5.0-alpha022.5.0-alpha02 版本包含這些修訂版本。

新功能

  • 將 API 新增至 WorkQuery 即可使用 id 來查詢 WorkInfo。(aosp/1412372b/157335295)
  • WorkManager 能進一步支援使用多個程序與新成果 (androidx.work:work-multiprocess:*) 的應用程式。這項新成果可協助解決大型應用程式遇到的一些問題:
    • 一般來說,WorkManager 必須在每個應用程式程序中進行初始化。但也不是很棒的情況,因為 SQLite 內容的數量會增加,進而造成其他問題。WorkManager 現已推出新 API,可用來指定使用 Configuration#setDefaultProcessName(processName) 指定的主要應用程式程序。processName 是完整的程序名稱,例如 packageName:processName (例如 com.example:remote)。
    • 一組新的 API:RemoteWorkManagerRemoteWorkContinuationenqueuecancelquery 工作要求。這些 API 包含 LiveData 變體,以避免多個程序中的 SQLite 爭用情況。所有傳送至 enqueuecancelquery 的呼叫都會透過 AIDL 轉送至 primary 應用程式程序,並傳回流動 ListenableFuture。 (aosp/1392657aosp/1411210aosp/1412215aosp/1417713 )

API 變更

  • WorkManager 現在會修剪已完成的 WorkRequest,沒有更完整的依附元件。緩衝時間長度已從 7 天變更為 1 天。(aosp/1419708)

修正錯誤

  • WorkManager 會主動協調工作,因此 WorkManager 初始化時,WorkRequestJobScheduler 工作也會保持同步。(aosp/1412794b/166292069)

2.5.0-alpha01 版本

2020 年 8 月 19 日

已釋出androidx.work:work-*:2.5.0-alpha012.5.0-alpha01 版本包含這些修訂版本。

新功能

  • 內部 API 相關變更,讓我們日後能透過 WorkManager 提供更優質的工具。敬請密切關注最新消息。

修正錯誤

  • 在部分裝置上追蹤網路狀態時,必須處理 SecurityException。(aosp/1396969)

外部貢獻

2.4.0 版本

2.4.0 版本

2020 年 7 月 22 日

已釋出androidx.work:work-*:2.4.02.4.0 版包含這些修訂版本。

自 2.3.0 版起的重大異動

  • WorkManager 個處理中的排程器現已支援更多功能。先前處理過程中,Scheduler 只會執行未延遲且符合限制條件的工作。現在,處理中的排程器會追蹤未來可能執行的 WorkRequest,包括 PeriodicWorkRequests。程序 Scheduler 也未觀察排程限制 (但仍受限於 WorkManager 使用的 Executor 大小)。也就是說,當應用程式在前景運作時,應用程式可以執行更多 WorkRequests 作業。為管理前景工作的延遲執行,WorkManager 也導入了新的可設定 RunnableScheduler。(aosp/1185778)
  • WorkManager 現在支援 RxJava 3。如要使用 RxJava 3,應加入以下依附元件:implementation "androidx.work:work-rxjava3:2.4.0"。(aosp/1277904)
  • 新增使用 WorkQuery 查詢 WorkInfo 的功能。如果開發人員想以多個屬性組合查詢 WorkInfo,就可以採用這種做法。詳情請參閱 WorkQuery.Builder.fromStates(...)WorkQuery.Builder. fromTags(...)WorkQuery.Builder.fromUniqueWorkNames(...)。(aosp/1253230b/143847546)
  • 新增透過以下功能向「WorkManager」要求診斷資訊的功能:

    adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>"
    

    這能提供幾項實用資訊,包括:

    • 過去 24 小時內完成的 WorkRequest 要求。
    • 目前正在執行的 WorkRequest 要求。
    • 已排定的 WorkRequest。(aosp/1235501)
  • 新增與 APPEND 類似的 ExistingWorkPolicy.APPEND_OR_REPLACE,但會取代已取消或失敗的鏈結。(b/134613984aosp/1199640)。

  • 提供可新增自訂 RunnableScheduler 的功能,以追蹤日後必須執行的 WorkRequest。這個名稱會顯示在處理中的排程器中。(aosp/1203944)

  • 開始支援在使用 DelegatingWorkerFactory 時動態新增委派目標工廠。 (b/156289105aosp/1309745)

  • BATTERY_NOT_LOW 限制條件的追蹤方式更符合平台。(aosp/1312583)

  • 處理中排程器現在會使用更完善的 API 來判斷程序的名稱。這項功能可以有效支援使用多個程序的應用程式。(aosp/1324732)

  • 可強制執行的新 Lint 規則:

    • 使用 setForegroundAsync() API 時適用的 foregroundServiceType。(b/147873061aosp/1215915)。
    • 指定 WorkManager 在直接使用 JobService API 時應使用的 JobScheduler ID。 aosp/1223567
    • 新增 Lint 規則,確保在使用 WorkerFactory 時,ListenableWorker現已採用 public。(aosp/1291262)
  • 如果呼叫 setForegroundAsync() 時尚未完成 ListenableWorker,系統會先透過 IllegalStateException 傳回傳回的 ListenableFuture。(aosp/1262743)

  • 修正前景 Worker 停止後,ForegroundService 不會停止運作的問題。(b/155579898aosp/1302153)。

  • 修正 WorkManager 嘗試執行至前景服務繫結的多個 Worker 執行個體 (b/156310133aosp/1309853) 的錯誤

2.4.0-rc01 版本

2020 年 6 月 24 日

已釋出 androidx.work:work-*:2.4.0-rc01版本2.4.0-rc01包含這些修訂版本。

修正錯誤

  • 處理中排程器現在會使用更完善的 API 來判斷程序的名稱。這項功能可以有效支援使用多個程序的應用程式。(aosp/1324732)

Version 2.4.0-beta01

2020年5月20日

已釋出 androidx.work:work-gcm:2.4.0-beta01androidx.work:work-runtime:2.4.0-beta01androidx.work:work-runtime-ktx:2.4.0-beta01androidx.work:work-rxjava2:2.4.0-beta01androidx.work:work-testing:2.4.0-beta012.4.0-beta01 版本包含這些修訂版本。

修正錯誤

  • 修正前景 Worker 停止後,ForegroundService 不會停止運作的問題。(b/155579898aosp/1302153)。
  • 修正 WorkManager 嘗試執行至前景服務繫結的 Worker 例項多重錯誤 (b/156310133aosp/1309853)
  • 新增使用 DelegatingWorkerFactory 的動態新增係數來委派對象。(b/156289105aosp/1309745)
  • BATTERY_NOT_LOW 限制條件的追蹤方式更符合平台。(aosp/1312583)

2.4.0-alpha03 版本

2020年4月29日

已釋出 androidx.work:work-*:2.4.0-alpha032.4.0-alpha03 版本包含這些修訂版本。

新功能

  • WorkManager 現在支援 RxJava 3。如要使用 RxJava 3,應加入以下依附元件:implementation "androidx.work:work-rxjava3:2.4.0-alpha03"。(aosp/1277904)
  • 新增 Lint 規則,確保在使用 WorkerFactory 時,ListenableWorker現已採用 public。(aosp/1291262)

API 變更

  • ListenableWorker 執行完成後呼叫 setProgressAsync(),現在會透過 ListenableFuture 傳送 Exception 信號。(aosp/1285494)
  • WorkQuery.Builder」已標示為「final」。(aosp/1275037)
  • WorkQuery.Builder 的工廠方法 withStateswithTagswithUniqueWorkNames 已重新命名為 fromStatesfromTagsfromUniqueWorkNames。(aosp/1280287)

修正錯誤

2.4.0-alpha02 版本

2020年4月1日

已釋出 androidx.work:work-*:2.4.0-alpha022.4.0-alpha02 版本包含這些修訂版本。

新功能

  • 新增一項 Lint 規則,當 WorkRequest 需要 Constraints.setRequiresCharging(...)Constraints.setRequiresDeviceIdle(...) 時顯示警告訊息。部分裝置無法同時充電或閒置。因此這類要求的執行速度低於預期。(aosp/1253840)

API 變更

  • 新增使用 WorkQuery 查詢 WorkInfo 的功能。如果開發人員想以多個屬性組合查詢 WorkInfo,就可以採用這種做法。詳情請參閱 WorkQuery.Builder withStates(...)WorkQuery.Builder withTags(...)WorkQuery.Builder withUniqueWorkNames(...)。(aosp/1253230b/143847546)

  • 如果呼叫 setForegroundAsync() 時尚未完成 ListenableWorker,系統會先透過 IllegalStateException 傳回傳回的 ListenableFuture。(aosp/1262743)

修正錯誤

2.4.0-alpha01 版本

2020年3月4日

已釋出 androidx.work:work-*:2.4.0-alpha012.4.0-alpha01 版本包含這些修訂版本。

新功能

  • WorkManager 個處理中的排程器現已支援更多功能。先前處理中的排程排程只會執行「未」延遲且符合限制條件的工作。現在,處理中的排程器會追蹤未來可能執行的 WorkRequest,包括 PeriodicWorkRequest。程序內排程器也不會遵守排程限制 (但仍然受到 WorkManager 使用的 Executor 大小限制)。也就是說,當應用程式在前景運作時,應用程式還可以執行更多 WorkRequest。(aosp/1185778)

  • 新增使用 adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>" 向 WorkManager 要求診斷資訊的功能。這能提供幾項實用資訊,包括:

    • 過去 24 小時內完成的 WorkRequest 要求。
    • 目前正在執行的 WorkRequest 要求。
    • 已排定的 WorkRequest。(aosp/1235501)
  • 可強制執行的新 Lint 規則:

    • 使用 setForegroundAsync() API 時適用的 foregroundServiceType。(b/147873061aosp/1215915)。
    • 指定 WorkManager 在使用 JobService API 時應使用的 JobScheduler ID。(aosp/1223567)

API 變更

  • 新增與 APPEND 類似的 ExistingWorkPolicy.APPEND_OR_REPLACE,但會取代已取消或失敗的鏈結。 (b/134613984aosp/1199640)

  • 提供新增自訂 RunnableScheduler 的功能,以追蹤日後必須執行的 WorkRequest。這個名稱會顯示在處理中的排程器中。(aosp/1203944)

修正錯誤

  • 已於 RxWorker 淘汰「setProgress()」,因為該物件先前會傳回「Single<Void>」這個不支援的類型。新增了 setCompletableProgress() 這個新 API,傳回的結果改為 Completable;同時也加入了新的 Lint 規則,可協助遷移至新的 API。(b/150080946aosp/1242665)

2.3.4 版本

2.3.4 版本

2020年3月18日

已釋出androidx.work:work-*:2.3.42.3.4 版包含這些修訂版本。

修正錯誤

  • 已修正超過 10 分鐘的執行回溯期,會導致多個長時間執行 Worker 的執行個體停止運作。(aosp/1247484b/150553353)
  • 修正 WorkManager 的lint IssueRegistry。謝謝 Slack 的 @ZacSweers 提問。(aosp/1217923)

2.3.3 版本

2.3.3 版本

2020年3月4日

已釋出 androidx.work:work-*:2.3.32.3.3 版包含這些修訂版本。

修正錯誤

2.3.2 版本

2.3.2 版本

2020年2月19日

已釋出 androidx.work:work-*:2.3.22.3.2 版包含下列修訂版本。

修正錯誤

  • 修正 WorkManagerr 在極少數情況下超過 100 項工作限制的問題。(aosp/1226859b/149092520)
  • 修正 ConstraintControllers 中的種族狀況。(aosp/1220100)
  • 改善長時間執行工作站的管理前景服務生命週期。(aosp/1226295)
  • 針對長時間取消的工作站在工作站取消作業時,改善管理通知的管理程序。(aosp/1228346)

2.3.1 版本

2.3.1 版本

2020 年 2 月 5 日

已釋出 androidx.work:work-*:2.3.12.3.1 版包含這些修訂版本

修正錯誤

  • 針對在前景 Service 執行時執行的 Worker,更妥善地管理 Notification 的生命週期。(aosp/1218539b/147249312)。
  • WorkManager現在需要 androidx.sqlite:sqlite-framework:2.1.0 的穩定性。(aosp/1217729)
  • 新增了 Lint 規則,以確保在 ForegroundInfo 中使用 foregroundServiceType 時,foregroundServiceType 是透過 AndroidManifest.xml 指定。(aosp/1214207b/147873061)

2.3.0版本

2.3.0版本

2020年1月22日

androidx.work:work-*:2.3.02.3.0-rc01起沒有變更。2.3.0 版包含這些修訂版本

自 2.2.0 版以來的重要異動

  • 支援透過 ListenableWorker#setForegroundAsync() 長時間執行或重要作業。
  • 透過 ListenableWorker#setProgressAsync() 支援工作站進度。
  • WorkManager 現在可以將額外的 Lint 規則封裝為程式庫的一部分,有助於及早發現錯誤。

2.3.0-rc01 版本

2020 年 1 月 8 日

已釋出 androidx.work:work-*:2.3.0-rc012.3.0-rc01 版包含這些修訂版本

這個版本與 2.3.0-beta02 相同

修正錯誤

  • work-testing 構件現在定義了 work-runtime-ktxapi 依附元件。(aosp/1194410)

2.3.0-beta02版本

2019 年 12 月 18 日

已釋出 androidx.work:work-*:2.3.0-beta022.3.0-beta02 版本包含這些修訂版本

新功能

  • 針對無法復原的 SQLite 例外狀況,新增更優質的錯誤訊息。(aosp/1185777)
  • 新增了 Lint 規則,以確保在使用隨選初始化設定時,將內容供應者 androidx.work.impl.WorkManagerInitializerAndroidManifest.xml 中移除。(aosp/1167007)
  • 在下列情況下加入了 lint 警告:enqueue()用於PeriodicWorkRequest而非enqueueUniquePeriodicWork()的 Google Ads 新帳戶重新申請驗證。(aosp/1166032)

API 異動

  • ForegroundInfo 現在需要指定在使用 ListenableWorker.setForegroundAsync() 時要使用的 notificationId這是一項重大變更。這樣一來,您就可以同時執行多個長時間的 WorkerWorkManager 也會更妥善地管理所提供 Notification 的生命週期。 (b/145473554aosp/1181208asop/1181216asop/1183577)

修正錯誤

  • 已修正 AlarmManager 實作錯誤,無法正確清除鬧鐘。(aosp/1156444)
  • 修正 WorkRequest 空白清單會導致建立 WorkContinuation 鏈不正確的問題。(b/142835274aosp/1157051)。

依附元件變更

  • WorkManager 現在會使用會議室 2.2.2。

2.3.0-beta01 版本

2019 年 11 月 20 日

已釋出 androidx.work:work-*:2.3.0-beta012.3.0-beta01 版本包含這些修訂版本

新功能

  • 新增一項 Lint 規則,避免在使用隨選初始化時,因錯誤導入 androidx.work.Configuration.Provider 而造成開發人員錯誤。aosp/1164559

2.3.0-alpha03 版本

2019年10月23日

已釋出 androidx.work:work-*:2.3.0-alpha032.3.0-alpha03 版本包含這些修訂版本

新功能

  • 新增 WorkManager.createCancelPendingIntent() API,可讓您輕鬆取消 WorkRequest,無需註冊 AndroidManifest.xml 中的其他元件。這個 API 可讓您輕鬆取消 NotificationWorkRequest。我們預計會在 2.3.0 版中與新的前景 API 搭配使用。
  • WorkManager 現在會使用 androidx.room:*:2.2.0 穩定版。

API 異動

  • ForegroundInfo.getNotificationType() 重新命名為 ForegroundInfo.getForegroundServiceType(),使其與基礎平台 API 更加一致。(b/142729893aosp/1143316)。

修正錯誤

  • 已修正在交易以外發出不必要的 setTransactionSuccessful() 錯誤導致的錯誤。進行罕見的遷移作業。(b/142580433aosp/1141737)。

2.3.0-alpha02 版本

2019年10月9日

已釋出 androidx.work:work-*:2.3.0-alpha022.3.0-alpha02 版本包含這些修訂版本

新功能

  • WorkManager 現已支援長時間執行的作業,或是讓作業系統持續執行的重要工作。詳情請參閱 ListenableWorker#setForegroundAsync() (Kotlin 則為 CoroutineWorker#setForeground())。(aosp/1133636)

API 異動

  • Data 中的 containsKey API 已重新命名為 hasKeyWithValueOfType。「ktx」媒體庫中對應的擴充功能也已重新命名。(b/141916545)

修正錯誤

  • WorkRequest 加入佇列的方法限制時,WorkManager 排程會公平運作。(aosp/1105766)
  • 只有在工作未完成時,WorkManager 才會呼叫 ListenableWorker#onStopped()。(b/140055777)
  • 現在,當工作站中斷或到達終端機狀態時,WorkManager 會移除進度資訊。(aosp/1114572)
  • 現在,Data更加實用toString()。(b/140945323)
  • Data 現已採用更好的 equals() 方法。同時也支援 Array 類型的 deepEquals。(b/140922528)
  • WorkManager 現在會將內部資料庫和偏好設定檔案儲存在一個備份目錄中。(b/114808216)

2.3.0-alpha01 版本

2019年8月22日

已釋出 androidx.work:work-*:2.3.September 5, 20190-alpha01。您可以前往這裡查看這個版本包含的修訂版本。

新功能

  • ListenableWorker 現在可以透過 setProgressAsync() API 設定進度。另外也在 CoroutineWorkerRxWorker 中新增了對應的 suspend-setProgress API,以及傳回 Single<Void>setProgress。透過這些新推出的 API,工作站可透過 WorkInfo 來傳送進度資訊,具有對應的 getProgress API。(b/79481554)
  • DatacontainsKey() API 可用於驗證Worker的輸入資料是否符合預期類型。(b/117136838)
  • Data 現在可以使用 Data.toByteArray()Data.fromByteArray() 進行序列化。請注意,Data 不提供版本保證保證,因此請勿保留此版本,或是將這個值用於應用程式之間的 IPC。而且只能在同一應用程式的多個程序之間使用。
  • 已新增透過 Configuration.setInputMergerFactory 指定 InputMergerFactory 的功能。(b/133273159)

API 異動

  • 如果 WorkerFactory 傳回先前叫用的 ListenableWorker 例項,WorkManager 會擲回 IllegalStateException 的例項。(b/139554406)
  • 更新了說明文件中有關 ListenableFuture 取消流程和 ListenableWorker 所含 onStopped() 回呼方法的內容。(b/138413671)

修正錯誤

  • 處理中的排程器現在會忽略具有 idle 限制的 WorkRequest。這些要求現在只會由 JobScheduler 在裝置實際支援 idle 時接收。 (aosp/1089779)
  • TestScheduler 現在會在測試中正確使用指定的 Executor 執行其內部工作執行者。(aosp/1090749)

2.2.0版本

2.2.0版本

2019 年 8 月 15 日

androidx.work:work-*:2.2.0 發布。您可以前往這裡查看這個版本包含的修訂版本。

這個版本與 androidx.work:work-*:2.2.0-rc01 相同。

2.1.0 版中的 2.2.0 重要變更

androidx.work:work-gcm:2.2.0 是新的 Maven 成果,可支援在 <= 22 API 級別的 Google Play 服務中使用 GCMNetworkManager 做為排程器。這是選擇性的依附元件,可協助您針對舊版 API 版本提供更穩定且效能更可靠的背景處理功能。如果您的應用程式使用 Google Play 服務,請將這個依附元件新增至 Gradle 檔案,讓系統自動取得 GCMNetworkManager 支援。如果你無法使用 Play 服務,WorkManager 會繼續在舊裝置上切換回 AlarmManager。

2.2.0-rc01 版本

2019 年 7 月 30 日

已釋出 androidx.work:work-*:2.2.0-rc01。您可以前往這裡查看這個版本包含的修訂版本。

修正錯誤

  • 修正造成 AlarmManager 實作的錯誤,導致服務太早關閉,並在極少數情況下造成 RejectedExecutionException。(aosp/1092374) (b/138238197)。
  • 已新增 NullPointerException 解決方法,在某些裝置上使用 JobScheduler API。(aosp/1091020) (b/138364061)、(b/138441699)

2.2.0-beta02 版本

2019年7月19日

已釋出 androidx.work:work-*:2.2.0-beta02。您可以前往這裡查看這個版本包含的修訂版本。

修正錯誤

  • 移除 2.2.0-beta01 中意外引入的 Jacoco 依附元件。

2.2.0-beta01版本

2019年7月17日

已釋出 androidx.work:work-*:2.2.0-beta01。您可以前往這裡查看這個版本包含的修訂版本。

新功能

  • androidx.work:work-gcm:2.2.0-beta01 是新的 Maven 成果,可支援在 <= 22 API 級別的 Google Play 服務中使用 GCMNetworkManager 做為排程器。這是選擇性依附元件,可協助系統在較舊的 API 版本中提供更穩定且有效率的背景處理功能。如果您的應用程式使用 Google Play 服務,請將這個依附元件新增至 Gradle 檔案,讓系統自動取得 GCMNetworkManager 支援。如果你無法使用 Play 服務,WorkManager 會繼續在舊裝置上切換回 AlarmManager。

修正錯誤

  • 修正在 Nvidia Shield K1 平板電腦追蹤網路狀態時修正 IllegalArgumentException 的問題。(aosp/1010188)

2.1.0 版本

2.1.0 版本

2019 年 7 月 11 日

已釋出 androidx.work:work-*:2.1.0。這個版本與 androidx.work:work-*:2.1.0-rc01 相同。

自 2.0.1 版之後的重要異動

  • work-runtime-ktx 需要 Java 8。如果遇到任何問題,您可以將 build.gradle 新增至 kotlinOptions { jvmTarget = "1.8" }
  • 新增 WorkManager 的初始化初始化功能 (僅供參照參考時建立 WorkManager)。b/127497100 如要設定專案進行初始化,請按照下列指示操作:
    1. 停用自動初始化工具
    2. 在自訂 Application 物件中導入 Configuration.Provider
    3. WorkManager.getInstance() 的所有參照變更為 WorkManager.getInstance(Context)。在本次異動中,我們已淘汰 WorkManager.getInstance()。就算您未進行隨選初始化,還是可以放心呼叫新的 WorkManager.getInstance(Context) 替換作業。
  • PeriodicWorkRequest 現已支援初始延遲。您可以在 setInitialDelay 上使用 PeriodicWorkRequest.Builder 方法來設定初始延遲時間。b/111404867
  • 新增透過 DelegatingWorkerFactory 委派給一或多個已註冊 WorkerFactory 的功能。b/131435993
  • 新增透過 Configuration.Builder.setTaskExecutor 自訂所有內部圖書保留的 Executor 功能。
  • 新增在 work-testing 構件中使用 TestWorkerBuilderTestListenableWorkerBuilder 來建立可測試單位的 WorkerListenableWorker 類別。
    • 請注意,work-testing 現在會將 Kotlin 提取為依附元件,並預設包含數個 Kotlin 擴充功能。
  • 已將執行作業嘗試次數新增至 WorkInfob/127290461
  • Data 類型現在可以儲存及擷取位元組和位元組陣列。這項操作並「不會」變更 Data 物件的大小上限。
  • WorkManager 現在會使用 Room 2.1.0 來修正部分資料庫問題。

2.1.0-rc01 版本

2019 年 6 月 27 日

已釋出 androidx.work:work-*:2.1.0-rc01。您可以前往這裡查看這個版本包含的修訂版本。

修正錯誤

  • 已修正在備份作業執行期間,使用 JobScheduler 執行工作時應用程式會停止運作的錯誤,詳情請參閱 b/135858602

2.1.0-beta02 版本

2019 年 6 月 20 日

已釋出 androidx.work:work-*:2.1.0-beta02。您可以前往這裡查看這個版本包含的修訂版本。

修正錯誤

  • TestListenableWorkerBuilder 現在建立 ListenableWorker 的執行個體時,會使用正確的 WorkerFactoryb/135275844
  • 已修正多項錯誤,導致系統因處理死亡順位而執行 WorkRequest 秒。b/135272196

2.1.0-beta01 版本

2019 年 6 月 13 日

androidx.work:work-*:2.1.0-beta01 發布。您可以前往這裡查看這個版本包含的修訂版本。

修正錯誤

  • WorkManager 現在會使用 Room 2.1.0 來修正部分資料庫問題。
  • 已移除主執行緒的部分啟動磁碟 I/O。
  • 已修正限制追蹤功能中的潛在鎖定。B/134361006
  • 已預先取消歸因於 WorkManager 的無效工作。b/134058261
  • 為 JobTimer API 加入了一些防禦裝置,以杜絕異常的裝置。

2.1.0-alpha03 版本

2019 年 6 月 5 日

已釋出 androidx.work:*:2.1.0-alpha03

修正錯誤

  • 改善 PeriodicWorkRequest 的說明文件。
  • WorkManagerTestInitHelper 現在會使用正確的背景執行者進行測試。
  • 修正在部分裝置上處理大型交易時發生的 SQLite 問題。(b/130182503)
  • WorkManager 的依附元件現在較為精細。(b/133169148).
  • 使用 WorkManager 安排工作時,解決 JobScheduler 實作上關於 OEM 的特定錯誤。
  • 改善 AlarmManager 排程器在服務生命週期中過去造成的當機問題。(b/133313734)

2.1.0-alpha02 版本

2019 年 5 月 16 日

WorkManager 2.1.0-alpha02 已發布。這個版本包含數個新的 API。

API 變更

  • PeriodicWorkRequest 現已支援初始延遲。您可以在 setInitialDelay 上使用 PeriodicWorkRequest.Builder 方法來設定初始延遲時間。b/111404867

  • 新增透過 DelegatingWorkerFactory 委派給一或多個已註冊 WorkerFactory 的功能。b/131435993

  • 新增透過 Configuration.Builder.setTaskExecutor 自訂所有內部圖書保留的 Executor 功能。

  • 改善 WorkRequest.keepResultsForAtLeast (b/130638001)、隨選初始化及 PeriodicWorkRequest.Builder (b/131711394) 相關說明文件。

2.1.0-alpha01 版本

2019 年 4 月 24 日

WorkManager 2.1.0-alpha01 已發布。這個版本包含數個新的 API。 請注意,從這個版本開始,新功能將不會回溯至 1.x 版本。建議您改用 2.x。

API 變更

  • 新增 WorkManager 的初始化初始化功能 (僅供參照參考時建立 WorkManager)。b/127497100 如要設定專案進行初始化,請按照下列指示操作:
    1. 停用自動初始化工具
    2. 在自訂 Application 物件中導入 Configuration.Provider
    3. WorkManager.getInstance() 的所有參照變更為 WorkManager.getInstance(Context)。在本次異動中,我們已淘汰 WorkManager.getInstance()。就算您未進行隨選初始化,還是可以放心呼叫新的 WorkManager.getInstance(Context) 替換作業。
  • 新增在 work-testing 構件中使用 TestWorkerBuilderTestListenableWorkerBuilder 來建立可測試單位的 WorkerListenableWorker 類別。
    • 請注意,work-testing 現在會從 Kotlin 提取依附元件,但也會預設包含數個 Kotlin 擴充功能。
  • 已將執行作業嘗試次數新增至 WorkInfob/127290461
  • Data 類型現在可以儲存及擷取位元組和位元組陣列。這項操作並「不會」變更 Data 物件的大小上限。
  • 已淘汰 CoroutineWorker.coroutineContext. 這個欄位已誤標為 CoroutineDispatcher;您應該不再需要該函式,因為只要自行在停權函式主體中前往適當的 CorContextineContext 即可。
  • RxWorker.createWork()RxWorker.getBackgroundScheduler() 現已使用 @NonNull 傳回類型加註。

2.0.1 版本

2.0.1 版本

2019 年 4 月 9 日

已發布 WorkManager 2.0.1。這個版本與 2.0.1-rc01 相同。

2.0.1-rc01 版

2019 年 4 月 3 日

WorkManager 2.0.1-rc01 已發布。這個版本修正了一些錯誤。針對舊版 1.x 使用者,有些變更也出現在 1.0.1-rc01 中。

修正錯誤

  • 機器人測試功能現在可以搭配 WorkManager 正確運作。b/122553577
  • 修正問題:在 Pre-JobScheduler API 中,未清除限制追蹤的極端案例當機。b/129226383
  • 已修正 StackOverflowError 可處理長時間工作的情況。b/129091233
  • 更新 PeriodicWorkRequest 的說明文件,表示 API 23 不支援彈性時間。
  • 修正 Kotlin 說明文件中部分無效連結。

2.0.0 版本

2.0.0 版本

2019 年 3 月 20 日

推出 WorkManager 2.0.0。這個版本與 2.0.0-rc01 相同,且是搭載 AndroidX 依附元件的 AndroidX 1.0.0 穩定版。建議您指定這個版本,而不是舊版 1.x 版本。所有有效開發作業將以 2.x 和 1.x 做為目標版本,但只會在少數時間內收到重大錯誤修正。

2.0.0-rc01 版本

2019 年 3 月 7 日

推出 WorkManager 2.0.0-rc01。這個版本與 1.0.0 穩定版相同,但含有 AndroidX 依附元件。一旦達到 2.0.0 的穩定版本,應包含這個版本,而舊版 1.x 版本只會收到部分重大錯誤修正。所有主動開發作業都會指定 2.x。

AndroidX 之前的依附元件

如要進一步瞭解如何使用 Kotlin 擴充功能,請參閱 KTX 說明文件
參考文件:Java

Groovy

dependencies {
    def work_version = "1.0.1"

    // (Java only)
    implementation "android.arch.work:work-runtime:$work_version"

    // Kotlin + coroutines
    implementation "android.arch.work:work-runtime-ktx:$work_version"

    // optional - RxJava2 support
    implementation "android.arch.work:work-rxjava2:$work_version"
    // optional - Test helpers
    androidTestImplementation "android.arch.work:work-testing:$work_version"
}

Kotlin

dependencies {
    val work_version = "1.0.1"

    // (Java only)
    implementation("android.arch.work:work-runtime:$work_version")

    // Kotlin + coroutines
    implementation("android.arch.work:work-runtime-ktx:$work_version")

    // optional - RxJava2 support
    implementation("android.arch.work:work-rxjava2:$work_version")

    // optional - Test helpers
    androidTestImplementation("android.arch.work:work-testing:$work_version")
}

1.0.1 版本

1.0.1 版本

2019 年 4 月 9 日

已釋出 WorkManager 1.0.1。這個版本與 1.0.1-rc01 相同。

請注意,我們強烈建議使用者更新至 WorkManager 2.x,因為未來 1.x 分支版本只有少數更新。1.x 程式庫也不會發布新的 API。

1.0.1-rc01 版本

2019 年 4 月 2 日

推出 WorkManager 1.0.1-rc01。這個版本修正了一些錯誤。

修正錯誤

  • 機器人測試功能現在可以搭配 WorkManager 正確運作。b/122553577
  • 修正問題:在 Pre-JobScheduler API 中,未清除限制追蹤的極端案例當機。b/129226383
  • 已修正 StackOverflowError 可處理長時間工作的情況。b/129091233

1.0.0 版本

1.0.0 版本

2019 年 3 月 5 日

這是 WorkManager 的 1.0.0 穩定版。這個版本的 WorkManager 與 1.0.0-rc02 相同。

1.0.0-rc02 版本

2019 年 2 月 21 日

這是 WorkManager 1.0.0 穩定版的第二個發布版本。 這個版本修正了兩項錯誤。

修正錯誤

  • Worker 現已在應用程式當機後正確顯示。 b/124546316

  • 擲回未勾選 ExceptionWorker 現已正確標示為 FAILED,不會再停止應用程式處理程序。

1.0.0-rc01 版本

2019 年 2 月 14 日

這是 WorkManager 1.0.0 穩定版的候選版本。這個版本已修正一個錯誤。

修正錯誤

  • AlarmManager 實作現在會根據 PeriodicWorkRequests 正確遵循 flex 期間。b/124274584

1.0.0-beta05 版本

2019 年 2 月 6 日

這個版本修正了一些錯誤。

修正錯誤

  • 已修正 API 23 上使用 JobScheduler.getPendingJob(...) 的情況。b/123893059
  • 已修正 Android 5.1 (API 級別 22) 以下版本裝置中的 NullPointerExceptionb/123835104

1.0.0-beta04 版本

2019 年 2 月 4 日

這個版本修正了一些錯誤。

修正錯誤

  • 改善 AlarmManager 實作的 PeriodicWork 排程。
  • 以往使用 AlarmManager 實作時,WorkManager 無法正確追蹤限制,這個問題現已修正。b/123379508
  • 已修正在採用 AlarmManager 實作時,WorkManager 無法重試處理程序的工作。b/123329850
  • 已修正在採用 AlarmManager 實作時,WorkManager 會外洩 Wakelocks 的情況。

1.0.0-beta03版本

2019年1月25日

這個版本修正了一些錯誤。

修正錯誤

  • 我們推出了迴歸 1.0.0-beta02,在某些情況下會導致工作無法正確執行。b/123211993
  • 修正工作未正確履行輪詢時間的案件。 b/122881597
  • 已修正 Android 5.1 (API 或更低版本) 裝置上的 ConcurrentModificationException 問題。我們將於 1.0.0-beta02 中修正這項問題。b/121345393
  • 已為資訊清單中的部分元件新增 exported=false,但這個註解缺少這項註解。
  • 在套件層級說明文件中加入 WorkManager 與 OS 互動的相關資訊。

1.0.0-beta02 版本

2019 年 1 月 15 日

這個版本修正了一些錯誤。

修正錯誤

  • 修正了週期性工作在搭載 Android 6.0 (API 級別 23) 的裝置上,可能會於每次間隔執行超過一次的極端案件。b/121998363
  • 修正了搭載 Android 5.1 (API 級別 22) 以下版本的裝置上發生的 ConcurrentModificationExceptionb/121345393
  • 針對搭載 Android 5.1 (API 級別 22) 以下版本的裝置修正了未符合限制條件時的工作執行錯誤。b/122578012
  • 最佳化工作完成處理方式,加快某些極端案件中的處理速度。b/122358129
  • 新增了一項變更,以解決 WorkManager 使用的多個 LiveData 執行個體之間可能有的競爭狀況。
  • 已改用「Room」依附元件 1.1.1 (而不是 1.1.1-rc01);這些版本完全相同。 b/122578011

1.0.0-beta01 版本

2018 年 12 月 19 日

這個版本沒有任何 API 變更;往後,WorkManager 應該會持續將 API 保持穩定,直到下一個版本為止,除非發生重大問題。這個版本修正了一些錯誤。

修正錯誤

  • 先前遭取消的子項於父項工作成功完成後不會再執行。b/120811767
  • 以正確的方式初始化記錄類別 (主要顯示於測試期間)。

1.0.0-alpha13 版本

2018 年 12 月 12 日

這個版本包含次要 API 變更,對一些 Kotlin 使用者而言非常實用。

API 變更

  • androidx.work.Result 已移動成為 ListenableWorker 的內部類別。這可防止重構程序與 Kotlin 的頂層 Result 類別發生衝突。這是一項破壞性的 API 變更。b/120564418

破壞性 API 變更

  • androidx.work.Result 已移至「ListenableWorker」的內部課程。

1.0.0-alpha12 版本

2018 年 12 月 5 日

這個版本包含幾項重大 API 變更;請參閱下方的「中斷 API 變更」部分。這個版本可能會成為我們發布的第一個 Beta 版。alpha12 也包含詳盡的說明文件更新。

API 變更

  • 新構件 work-rxjava2 導入了 RxWorker。這是一個等待接收 Single<Payload>ListenableWorker
  • 移除了對 Firebase JobDispatcher 的支援,原因是該程式庫即將遭到淘汰。換句話說,隨著我們邁入 Beta 版,work-firebase 構件將不再更新。我們日後會考慮增設替代選項。
  • Payload 合併至 ResultResult 現在是「密封類別」,內含 3 種具體實作,可透過 Result.success() (或Result.success(Data))、Result.failure() (或Result.failure(Data)) 和 Result.retry() 取得。您的 ListenableFuture 現在會產生 Result,而非 PayloadWorker 沒有輸出 Data 的 getter 和 setter 方法。這是一項破壞性變更。
  • 新增了 Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)Constraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit) 以及相應變體,為觸發速度較慢的內容 URI 提供更完善的支援。b/119919774
  • 新增了 WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration) 變體。這個方法必須使用 API 26。
  • 新增了 Operation.await()ListenableFuture.await() Kotlin 擴充功能方法。
  • Operation.getException() 已重新命名為 Operation.getThrowable()這是一項破壞性變更。
  • ContentUriTriggers 類別和其參照方法不再提供公共使用。這是一項破壞性變更。
  • 移除了 WorkManagerWorkContinuationOneTimeWorkRequest 中的其餘變數引數方法,以簡化 API。如要修正任何版本問題,可以使用 Arrays.asList(...) 包裝現有的變數引數。我們仍會納入每種方法的單一引數版本。這是一項破壞性變更。
  • 移除了 WorkContinuation.combine(OneTimeWorkRequest, *) 變體。這些變體提供的 API 較為複雜難懂;現有的 combine 方法比較容易理解。這是一項破壞性變更。

修正錯誤

  • Marchmallow 之前的實作版本現在能夠更穩定地從現行工作程序終止的狀況中恢復。
  • 透過 observeForever 觀測到的 LiveData 可使用 WorkManager 追蹤。這是將 Room 程式庫修正項目向後移植。b/74477406
  • 如果序列化物件超出大小上限,Data.Builder.build() 現在會擲回例外狀況。過去,這只會發生在背景執行緒,因此您無法做出適當處理。
  • 進一步區分已停止與已取消的工作;getWorkInfoById()ListenableWorker.onStopped() 期間會傳回具備 CANCELLED StateWorkInfo
  • ListenableWorker 中將 null Result 視作失敗。b/120362353
  • 對搭載 API 24 且不時擲回 IllegalArgumentException 的 Shield Tablets 做出推測性修正。b/119484416

破壞性 API 變更

  • 移除了對 Firebase JobDispatcher 的支援,原因是該程式庫即將遭到淘汰。換句話說,隨著我們邁入 Beta 版,work-firebase 構件將不再更新。我們日後會考慮增設替代選項。
  • Payload 合併至 ResultResult 現在是「密封類別」,內含 3 種具體實作,可透過 Result.success() (或Result.success(Data))、Result.failure() (或Result.failure(Data)) 和 Result.retry() 取得。您的 ListenableFuture 現在會產生 Result,而非 PayloadWorker 沒有輸出 Data 的 getter 和 setter 方法。
  • 新增了 Operation.await()ListenableFuture.await() Kotlin 擴充功能方法。
  • Operation.getException() 已重新命名為 Operation.getThrowable()
  • ContentUriTriggers 類別和其參照方法不再提供公共使用。
  • 移除了 WorkManagerWorkContinuationOneTimeWorkRequest 中的其餘變數引數方法,以簡化 API。如要修正任何版本問題,可以使用 Arrays.asList(...) 包裝現有的變數引數。我們仍會納入每種方法的單一引數版本。
  • 移除了 WorkContinuation.combine(OneTimeWorkRequest, *) 變體。而是造成混淆者 API;現有的 combine 方法更加清晰。

1.0.0-alpha11 版本

2018 年 11 月 8 日

這個版本包含多項異動,將於 beta 成為穩定 API。 這個版本有破壞性的 API 變更;請參閱下方的「中斷 API 變更」部分。

API 變更

  • work-runtime-ktx 推出新的 CoroutineWorker
  • WorkStatus 已重新命名為 WorkInfo。所有相應的 getStatus 方法變體也已重新命名為對應的 getWorkInfo 變體。這是一項破壞性變更。
  • ListenableWorker.onStopped() 不再接受用來指出 WorkRequest 是否已取消的布林引數。這項資訊在 WorkManager 中已無區別。這是一項破壞性變更。
  • androidx.work.test 套件已重新命名為 androidx.work.testing 套件。這是一項破壞性變更。
  • Constraints 的 setter 不再是公用 API 的一部分。這是一項破壞性變更。
  • WorkerParameters.getTriggeredContentUris()WorkerParameters.getTriggeredContentAuthorities() 先前會傳回陣列,現在則會傳回集合。這是一項破壞性變更。
  • ListenableWorker.onStartWork() 已重新命名為 ListenableWorker.startWork()這是一項破壞性變更。
  • WorkStatus 的建構函式不再是公用 API 的一部分。這是一項破壞性變更。
  • Configuration.getMaxJobSchedulerID()Configuration.getMinJobSchedulerID() 已分別重新命名為 Configuration.getMinJobSchedulerId()Configuration.getMaxJobSchedulerId()這是一項破壞性變更。
  • 在公用 API 中新增了大量 @NonNull 註解,讓 API 更貼近需求。
  • 新增 WorkManager.enqueueUniqueWork() API,這樣不必建立 WorkContinuation,就能將不重複的 OneTimeWorkRequest 加入佇列。
  • WorkManager 中,enqueuecancel 方法的所有變體現在會傳回新的 Operation 類型。這是一項破壞性變更。
  • enqueue 的所有變體皆不再接受 WorkRequest 的變數引數。這是一項破壞性變更。 請改用 Collections。您可以使用 Arrays.asList() 修改現有程式碼。這項變更是為了減少 API 介面和方法的計數。
  • 現在如果在每個程序中嘗試 initialize WorkManager 超過一次,就會產生 IllegalStateException這是一項破壞性變更。

修正錯誤

  • work-runtime-ktx 構件中的 WorkRequest.Builder 現在會使用 ListenableWorker。修正 b/117666259
  • 確保 PeriodicWork 的下次執行時間設在未來。修正 b/118204399
  • 移除在應用程式啟動時使用 WorkManager 而可能導致的磁碟 I/O。修正 b/117796731
  • 修正 WorkConstraintsTracker 中的競爭狀況。修正 android-workmanager/issues/56

破壞性 API 變更

  • WorkStatus 已重新命名為 WorkInfo。所有相應的 getStatus 方法變體也已重新命名為對應的 getWorkInfo 變體。
  • ListenableWorker.onStopped() 不再接受用來指出 WorkRequest 是否已取消的布林引數。這項資訊在 WorkManager 中已無區別。
  • androidx.work.test 套件已重新命名為 androidx.work.testing 套件。
  • Constraints 的 setter 不再是公用 API 的一部分。
  • WorkerParameters.getTriggeredContentUris()WorkerParameters.getTriggeredContentAuthorities() 先前會傳回陣列,現在則會傳回集合。
  • ListenableWorker.onStartWork() 已重新命名為 ListenableWorker.startWork()
  • WorkStatus 的建構函式不再是公用 API 的一部分。
  • Configuration.getMaxJobSchedulerID()Configuration.getMinJobSchedulerID() 已分別重新命名為 Configuration.getMinJobSchedulerId()Configuration.getMaxJobSchedulerId()
  • WorkManager 中,enqueuecancel 方法的所有變體現在會傳回新的 Operation 類型。
  • enqueue 的所有變體皆不再接受 WorkRequest 的變數引數。
  • 現在每次程序試著重複 initialize WorkManager 次,都會得到 IllegalStateException

1.0.0-alpha10 版本

2018 年 10 月 11 日

這個版本支援由開發人員控管的非同步工作。這個版本有破壞性的 API 變更;請參閱下方的「中斷 API 變更」部分。

我們預期 WorkManager 將進入 Alpha 測試期的最後階段,並在 Beta 版中達到 API 穩定狀態,因此請抽空透過我們的 Issue Tracker 提供意見回饋。

API 變更

  • 移除了先前所有的 deprecated 方法和類別,特別是預設的 Worker 建構函式。這是一項破壞性的 API 變更。
  • NonBlockingWorker 重新命名為 ListenableWorker,現為未隱藏的公開類別並已開放使用。
    • ListenableWorker 可讓您存取一種抽象的方法 ListenableFuture<Payload> onStartWork(),只要透過主執行緒呼叫即可。您可以選擇採非同步形式啟動與處理工作。完成後,請視情況更新 ListenableFuturealpha02 中的 Futures 套件會提供 ListenableFuture 的參考實作 (請見下方的 WorkManager 部分)。
    • Worker 採用抽象的 Result doWork() 方法,可擴充 ListenableWorker 並如往常一樣運作。
    • 將部分方法和成員從 Worker 重組至 ListenableWorker
    • 針對使用 Kotlin 協同程式 (在穩定版本發布後) 和 RxJava2 的 ListenableWorker,我們會盡快提供參考實作。
  • WorkerFactory 介面和 DefaultWorkerFactory 具體實作已併入抽象類別 WorkerFactory。這項實作可確保在其他做法皆無效時,為使用者建立的 WorkerFactory 執行個體呼叫預設的反射性行為。這是一項破壞性變更。
  • 移除了 WorkManager.synchronous() 和 WorkContinuation.synchronous(),以及所有相關方法。新增了 ListenableFuture<Void>,做為 API 中多種方法的傳回類型。這是一項破壞性的 API 變更。
    • 您現在可以使用 ListenableFuture 同步進行擷取與觀測。比方說,WorkManager.enqueue() 原本會傳回 void,現在則會傳回 ListenableFuture<Void>。作業完成後,您可以呼叫 ListenableFuture.addListener(Runnable, Executor)ListenableFuture.get() 來執行程式碼。
    • 請注意,這些 ListenableFuture 不會指出作業成功或失敗,只會指出作業已完成。您還是需要連結 WorkManager 方法,才能掌握這項資訊。
    • 我們會忽略對這些物件的 cancel() 呼叫,原因是這些呼叫容易造成混淆又難以理解 (要取消的是作業還是所產生的工作?)。這屬於 Future 合約範圍內。
    • 為了與同步的 getStatus* 方法維持一致性,我們提供了 ListenableFuture 變體並對傳回 LiveData 的現有變體進行了重新命名,在名稱中明確加上「LiveData」(例如 getStatusesByIdLiveData(UUID))。這是一項破壞性的 API 變更。

修正錯誤

  • 修正了 alpha09 中已知的 androidx-annotations.pro 檔案重複問題。如要移除先前版本資訊中提供的解決方法,可以從 Gradle 檔案中刪除 exclude 'META-INF/proguard/androidx-annotations.pro'
  • 新增了 ProGuard 設定,以保留新的 Worker 建構函式。b/116296569
  • 修正競爭狀況在工作經過 REPLACE 處理後可能發生的 NullPointerExceptionb/116253486b/116677275
  • WorkContinuation.combine() 現在接受一個以上 (而非兩個以上) 的 WorkContinuationb/117266752

破壞性 API 變更

  • 移除了先前所有的 deprecated 方法和類別,特別是預設的 Worker 建構函式。
  • WorkerFactory 介面和 DefaultWorkerFactory 具體實作已併入抽象類別 WorkerFactory
  • 移除了 WorkManager.synchronous()WorkContinuation.synchronous()
  • WorkManager.getStatus*() 方法現在會傳回 ListenableFutureWorkManager.getStatus*LiveData() 則會傳回 LiveData

1.0.0-alpha09 版本

2018 年 9 月 19 日

已知問題

如果您遇到以下問題:「找到多個檔案採用獨立於 OS 的路徑『META-__________/proguard/androidx-annotations.pro』」,請在 Gradle 檔案中加入下方內容,做為暫時性解決方案;我們將在 alpha10 中修正這個問題:

Groovy

android {
    packagingOptions {
        exclude 'META-INF/proguard/androidx-annotations.pro'
    }
}

Kotlin

android {
    packagingOptions {
        exclude("META-INF/proguard/androidx-annotations.pro")
    }
}

修正錯誤

  • 新增了另一項用於解決「100 個工作」錯誤的必備修正項目。b/115560696
  • 新增了一些修正項目,用於解決因競爭狀況而導致的外鍵限制錯誤。b/114705286
  • ConstraintTrackingWorker.onStopped(boolean) 呼叫委派至基礎 Workerb/114125093
  • 針對 Firebase JobDispatcher 強制採用正確的最短輪詢延遲時間。b/113304626
  • 改善了程式庫內部的執行緒保證。
  • 修正在內部刪除重複的 LiveData 時可能發生的問題。

API 變更

  • 您現在可以在執行階段建立自己的 Worker 執行個體,方法是在 WorkManager.Configuration 中指定 WorkerFactory。該備用工廠為 DefaultWorkerFactory,與舊版 WorkManager 的行為相符。
    • WorkerNonBlockingWorker 的預設建構函式現已標示為已淘汰。請使用新的建構函式 (Worker(Context, WorkerParameters)) 並呼叫 super(Context, WorkerParameters);日後推出的 WorkManager 版本將移除該預設建構函式。
  • 我們已開始在內部使用新的 ListenableFuture 構件 (不含 Guava 依附元件),並且將在日後推出的 API 版本中導入 ListenableFutures。這項變更將推動在最終取消隱藏 NonBlockingWorker
  • 新增透過 TestDriver.setInitialDelayMet(UUID)TestDriver.setPeriodDelayMet(UUID)TestDriver 中觸發定時工作的功能。b/113360060

破壞性變更

  • 淘汰了預設的 WorkerNonBlockingWorker 建構函式。請盡快遷移至新的建構函式。日後的版本將移除預設建構函式。

1.0.0-alpha08 版本

2018 年 8 月 27 日

修正錯誤

  • 將 WorkManager 元件明確標示為不具備直接啟動感知特性,以免這些元件在直接啟動期間觸發。日後,我們將提供具有直接啟動感知特性的 WorkManager 版本。b/112665532
  • 修正了重試的工作無法執行的問題。b/112604021
  • 修正了週期性工作無法重複執行的問題 (與上述問題相關)。b/112859683
  • 在應用程式程序已開始執行時遵守輪詢政策。
  • 修正了 Data 中顯示的例外狀況訊息,指出上限為 10 KB。
  • Configuration.setMaxSchedulerLimit(int) 的上限值下修至 50,以因應 JobScheduler 在完成過程中的一些延遲。b/112817355

1.0.0-alpha07 版本

2018 年 8 月 16 日

修正錯誤

  • 修正了在 SQL 查詢中可使用負數限制的問題,這類查詢可能會傳回無限量的結果。
  • 已完成執行的工作現在會正確地取消其在其他排程器中的所有待處理副本。原本這些副本會導致 JobScheduler 工作數量超出上限。b/111569265
  • 修正了 ConstraintTracker 中發生的 ConcurrentModificationExceptionb/112272753
  • Data.getBooleanArray(String)Data.getIntArray(String) 的傳回類型註解變更為 @Nullable,而非 @NonNullb/112275229

API 變更

  • Worker 現在擴充了一個新類別 NonBlockingWorker。這不會影響目前使用情形。日後,NonBlockingWorker 將成為 API 全面支援的實體,適用於自訂執行緒解決方案。
  • Data.getBooleanArray(String)Data.getIntArray(String) 的傳回類型註解變更為 @Nullable,而非 @NonNullb/112275229
  • Kotlin 擴充功能:已淘汰的 Map.toWorkData() 並新增頂層 workDataOf(vararg Pair<String, Any?>),使其與現有的 API 更加一致。

1.0.0-alpha06 版本

2018 年 8 月 1 日

修正錯誤

  • 防止資料庫在安排工作時間時遭到鎖定。b/111801342
  • 修正在打盹模式中導致 PeriodicWork 無法依時間表執行的錯誤。b/111469837
  • 修正在追蹤限制時的競爭狀況,以避免 WorkManager 異常終止。googlecodelabs/android-workmanager/issues/56
  • 使用 WorkRequest.Builder#build() 時可建立專屬的 WorkRequestb/111408337
  • 只在 WorkRequest 有需要時才啟用 RescheduleReceiverb/111765853

1.0.0-alpha05 版本

2018 年 7 月 24 日

API 變更

  • WorkManager.getInstance() 現在加上的註解為 @NonNull,而非 @Nullable。如果採用手動初始化,而單例模式未正確地初始化,該方法將擲回 IllegalStateException這是一項破壞性的 API 變更。
  • 新增了 Configuration.Builder.setMinimumLoggingLevel(int) 這個新的 API,可控管 WorkManager 詳細程度。根據預設,WorkManager 會記錄 Log.INFO 以上級別的資訊。
  • 變更了 Data.getString() 的簽名,使其不再接受預設值 (默示為 null)。這是一項破壞性的 API 變更。
  • 將部分只有內部需要使用的方法標示為 @hide。這包括 Constraints 建構函式、Data.toByteArray()Data.fromByteArray(byte[])這是一項破壞性的 API 變更。

修正錯誤

  • 針對已知的自動備份情況,WorkManager 不會再執行工作,否則可能會導致異常終止。b/110564377
  • 修正了使用 JobScheduler 時發生的 PeriodicWorkRequest 重複排程問題。b/110798652
  • 修正了 PeriodicWorkRequest 在裝置進入打盹狀態後無法正確執行的問題。b/111469837
  • 修正了使用 Firebase JobDispatcher 時發生的初始延遲問題。b/111141023
  • 修正了部分的潛在競爭狀況和時機問題。
  • 正確地釋出了不再需要的 BroadcastReceiver
  • 針對遭到強制關閉並重新啟動的應用程式,盡量提高重新排程成效。
  • 允許在指定的 WorkRequest 之前或之後呼叫 TestScheduler.setAllConstraintsMet(UUID)b/111238024

破壞性變更

  • WorkManager.getInstance() 現在加上的註解為 @NonNull,而非 @Nullable
  • 變更了 Data.getString() 的簽名,使其不再接受預設值 (默示為 null)。
  • 將部分只有內部需要使用的方法標示為 @hide。這包括 Constraints 建構函式、Data.toByteArray()Data.fromByteArray(byte[])

1.0.0-alpha04 版本

2018 年 6 月 26 日

修正錯誤

  • 現在當 AlarmManager 使用以 PeriodicWorkRequest 為基礎的實作時,能夠正確地重新排程。
  • 修正了在強制停止或重新啟動後為所有工作站重新排程時可能發生的 ANR 問題。b/110507716
  • 為各個 WorkManager API 新增了是否可為空值註解。b/110344065
  • 記錄在工作站執行期間所發生卻未偵測到的例外狀況。b/109900862
  • 允許遷移破壞性資料庫,以防您日後決定復原至舊版 WorkManager。b/74633270
  • 修正了因建立重複的隱式標記而導致的遷移異常終止問題。這種規定十分罕見,只有使用同一種隱含代碼格式才會發生這個問題。

1.0.0-alpha03 版本

2018年6月19日

修正錯誤

  • 修正了以 AlarmManager 為基礎的實作中的競爭狀況。b/80346526

  • 修正了在裝置重新啟動後使用 JobScheduler 時工作重複的問題。

  • 具備內容 URI 觸發條件的工作現在於重新啟動後仍會保留。b/80234744

  • 說明文件更新。b/109827628b/109758949b/80230748

  • 修正了將 WorkRequest 重新加入佇列時發生的異常終止問題。b/109572353

  • 修正了使用 work-runtime-ktx 依附元件時顯示的 Kotlin 編譯器警告。

  • WorkManager 現在採用 Room 1.1.1-rc1 版本。

API 變更

  • 新增了 WorkContinuation.getStatuses() 同步版本 getStatusesSync()
  • Worker 能夠區別由使用者啟動的取消操作以及由 OS 要求的暫時性停止操作。如果收到任何種類的停止要求,Worker.isStopped() 將傳回 true。如果工作明確遭到取消,Worker.isCancelled() 將傳回 trueb/79632247
  • 針對 API 28 新增了 JobParameters#getNetwork() 支援。這會透過 Worker.getNetwork() 顯示。
  • 新增了 Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit),方便您強制規定可傳送到 JobSchedulerAlarmManager 的工作數量。這有助於防止 WorkManager 佔用所有可用的 JobScheduler 運算單元。
  • 新增了 Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId),以協助定義可供 WorkManager 安全使用的 JobScheduler 工作 ID 範圍。b/79996760
  • Worker.getRunAttemptCount() 會傳回特定 Worker 目前的執行作業計數。b/79716516
  • WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork) 可讓您將不重複的 PeriodicWorkRequest 加入佇列。b/79600647
  • WorkManager.cancelAllWork() 會取消所有 Worker。依附於 WorkManager 的程式庫可以使用 WorkManager.getLastCancelAllTimeMillis() 查詢上次呼叫這個方法的時間,以便對內部狀態進行進一步清理。
  • 新增了 WorkManager.pruneWork(),以便將已完成的工作從內部資料庫中移除。b/79950952b/109710758

行為變更

  • 為所有 WorkRequest 新增了隱式標記,也就是 Worker 的完整類別名稱。這樣一來,即使沒有 tag 或無法使用 id,也能移除 WorkRequestb/109572351

破壞性變更

  • Worker.WorkerResult 已重新命名為 Worker.Result
  • Worker.onStopped現在有其他 isCancelled 參數,當 Worker 明確取消時,就會設為 true

1.0.0-alpha02 版本

2018 年 5 月 24 日

修正錯誤

  • 修正了 State.isFinished()NullPointerExceptionb/79550068
  • 修正了導致 WorkerApplication.onCreate() 時重新排程的問題。b/79660657
  • 修正了排程工作數量可超出 OS 規定上限的問題。b/79497378
  • 將與 Worker 相關聯的 Wake Lock 清理作業移至背景執行緒。
  • 現在當所有待處理工作完成時,AlarmManager 實作會正確地進行清理。
  • 修正了對非英文使用地區造成影響的清理 SQL 查詢。b/80065360
  • Data 中新增了的 float 支援。b/79443878
  • Data.Builder.putAll() 現在會傳回 Builder 的執行個體。b/79699162
  • 在說明文件中提供更多 Javadoc 和修正項目。b/79691663

API 變更

  • Worker 可對中止處置做出回應。Worker.isStopped() 可用於檢查 Worker 是否已遭中止,Worker.onStopped() 則可用於執行輕量清理作業。
  • Worker.getTags() API 會傳回與 Worker 相關聯的標記 Set
  • 為 API 新增了 javax.time.Duration 多載,可接受時間長度和 TimeUnit 的組合。這受到 @RequiresApi(26) 的防護。
  • WorkManager 擴充功能已從 androidx.work.ktx 套件移至 androix.work 套件。舊的擴充功能已淘汰,將在日後推出的版本中移除。
  • 淘汰了 Configuration.withExecutor(),要改用「Configuration.setExecutor()」嗎?

1.0.0-alpha01 版本

2018 年 5 月 8 日

WorkManager 能夠為受到保證、可感知限制的背景工作簡化排程與執行作業。初始版本為 1.0.0-alpha01