在 上一篇文章 中,我們提到了現代 WorkManager API 對工具支援方面也進行了改進,本文我們將結合實際案例來看看具體有哪些改進。如果您更喜歡通過視訊瞭解此內容,請在此處檢視:
https://www.bilibili.com/vide...
△ Android Studio 對現代 WorkManager 的支援
從 Android Studio Arctic Fox 開始,您可以直接 在 Android Studio 內使用後臺任務檢查器檢查和除錯 Worker。
後臺任務檢查器是應用檢查套件的一部分,它針對應用的幾個方面提供更豐富詳細的資訊。為了充分利用檢查器,您的應用需要使用 WorkManager 2.5 或更新的版本。
應用檢查器啟用方法
首次開啟應用檢查器的最快方法是: 連續按兩下 "Shift" 鍵,然後在彈出對話方塊中輸入 App Inspection 並按Enter鍵確認。您也可以從選單欄依次選擇: View → Tool Window → App Inspection 來開啟應用檢查器皮膚。
△ 開啟 App Inspection 皮膚
示例演示
本次演示使用了 Android Studio Bumblebee 和 GitHub 上公開的 WorkManager 示例。
在 App Inspection 皮膚中切換到後臺任務檢查器 (Background Task Inspector) 標籤,勾選應用中的 Filter,然後點選 Apply 按鈕。可以看到在隨著過濾的持續進行,每個 Worker 在其生命週期中的狀態也在持續變化著。由於這些 Worker 按照順序執行,所以 CleanupWorker 需要在下一個 Worker 開始之前完成。其他的所有 Worker 此時要麼處於排隊狀態,要麼處於阻塞狀態。
△ 使用 WorkManagerSample 應用和應用檢查器皮膚
現在 CleanupWorker 已經完成,佇列中的其他 Worker 也將按照次序執行。
△ 使用應用檢查器皮膚的圖表檢視
您也可以從類似圖示的影像中檢視整個接續佇列的內容。請從中選擇一個 Worker,切換到圖表檢視 (按鈕為流程圖樣式)。對於更加複雜的佇列來說,圖表檢視是一種高效且不可或缺的理解手段。從這兩種檢視中,您都可以直接點選任何 Worker 來獲得更詳盡的分析。
△ 後臺任務的詳細資訊
在頂部是一個基本的說明資訊,包括可點選的類名和一個唯一 ID。
資料庫檢查器
△ 資料庫檢查器皮膚
前面的內容我們談到,WorkManager 會將您的工作資料持久化,那麼下面我們用資料庫檢查器 (Database Inspector) 進一步看看這是怎樣實現的。您可以點選資料庫檢查器標籤頁,並在其中查詢某項工作的唯一 ID。您會發現,有關該特定執行的各項資訊都被儲存下來了。
後臺任務檢查器
您還可以進一步檢視某個特定的執行被安排到了哪一個佇列中。和手動搜尋呼叫資訊相比,這種經過編組整理的方式能夠明顯提升分析效率。您可以看到特定 Worker 是否受到限制,以及更加詳細的頻率和執行狀態資訊。
WorkManager 可以使用其中一個 Worker 的輸出資料,並將其傳遞到流水線下游的另一個 Worker 中。這一點您可以從任務詳細資訊的結果 (Results) 中看到。輸出資料包含著每個 Worker 的唯一識別符號,會按照佇列順序進行傳遞。
△ 演示 Worker 執行失敗的場景
這裡為您展示當工作鏈中的某個 Worker 執行失敗時的場景。在工作的接續佇列中插入了一個出錯的 Worker,然後重啟應用。可以看到,上一次執行的結果仍然在這裡供您檢查。這也進一步印證了剛才說到的工作資料持久化特性。這裡啟動並應用過濾器,選擇 Worker 後再次點選圖表檢視,這樣就能迅速定位工作開始出錯的位置 (您可以留意這裡的感嘆號)。您可以從這裡點選直接進入 Worker 檢視,然後繼續除錯出錯的會話。
瞭解更多
通過本文您已經對新的後臺任務檢查器做了簡單瞭解。以上便是 WorkManager 相關全部內容,如需更多資源,請參閱:
- 現代 WorkManager API 已釋出
- WorkManager 系列文章: 使用 Dagger 自定義 WorkManager
- WorkManager 文件: 使用 WorkManager 排程任務
- Codelab: 使用 WorkManager 處理後臺任務
- Codelab: WorkManager 進階知識
- WorkManager 示例程式碼
歡迎您 點選這裡 向我們提交反饋,或分享您喜歡的內容、發現的問題。您的反饋對我們非常重要,感謝您的支援!