Android Studio 對現(xiàn)代 WorkManager 的支持

上一篇文章 中,我們提到了現(xiàn)代 WorkManager API 對工具支持方面也進行了改進,本文我們將結(jié)合實際案例來看看具體有哪些改進。如果您更喜歡通過視頻了解此內(nèi)容,請 點擊此處 查看。

從 Android Studio Arctic Fox 開始,您可以直接 在 Android Studio 內(nèi)使用后臺任務檢查器檢查和調(diào)試 Worker。

后臺任務檢查器是應用檢查套件的一部分,它針對應用的幾個方面提供更豐富詳細的信息。為了充分利用檢查器,您的應用需要使用 WorkManager 2.5 或更新的版本。

應用檢查器啟用方法

首次打開應用檢查器的最快方法是: 連續(xù)按兩下 "Shift" 鍵,然后在彈出對話框中輸入 App Inspection 并按回車鍵確認。您也可以從菜單欄依次選擇: View → Tool Window → App Inspection 來打開應用檢查器面板。

△ 打開 App Inspection 面板

示例演示

本次演示使用了 Android Studio Bumblebee 和 GitHub 上公開的 WorkManager 示例。

在 App Inspection 面板中切換到后臺任務檢查器 (Background Task Inspector) 標簽,勾選應用中的 Filter,然后點擊 Apply 按鈕??梢钥吹皆陔S著過濾的持續(xù)進行,每個 Worker 在其生命周期中的狀態(tài)也在持續(xù)變化著。由于這些 Worker 按照順序運行,所以 CleanupWorker 需要在下一個 Worker 開始之前完成。其他的所有 Worker 此時要么處于排隊狀態(tài),要么處于阻塞狀態(tài)。

△ 使用 WorkManagerSample 應用和應用檢查器面板

現(xiàn)在 CleanupWorker 已經(jīng)完成,隊列中的其他 Worker 也將按照次序運行。

△ 使用應用檢查器面板的圖表視圖

您也可以從類似圖示的圖像中查看整個接續(xù)隊列的內(nèi)容。請從中選擇一個 Worker,切換到圖表視圖 (按鈕為流程圖樣式)。對于更加復雜的隊列來說,圖表視圖是一種高效且不可或缺的理解手段。從這兩種視圖中,您都可以直接點擊任何 Worker 來獲得更詳盡的分析。

△ 后臺任務的詳細信息

在頂部是一個基本的說明信息,包括可點擊的類名和一個唯一 ID。

數(shù)據(jù)庫檢查器

△ 數(shù)據(jù)庫檢查器面板

前面的內(nèi)容我們談到,WorkManager 會將您的工作數(shù)據(jù)持久化,那么下面我們用數(shù)據(jù)庫檢查器 (Database Inspector) 進一步看看這是怎樣實現(xiàn)的。您可以點擊數(shù)據(jù)庫檢查器標簽頁,并在其中查找某項工作的唯一 ID。您會發(fā)現(xiàn),有關(guān)該特定執(zhí)行的各項信息都被保存下來了。

后臺任務檢查器

您還可以進一步查看某個特定的執(zhí)行被安排到了哪一個隊列中。和手動搜索調(diào)用信息相比,這種經(jīng)過編組整理的方式能夠明顯提升分析效率。您可以看到特定 Worker 是否受到限制,以及更加詳細的頻率和執(zhí)行狀態(tài)信息。

WorkManager 可以使用其中一個 Worker 的輸出數(shù)據(jù),并將其傳遞到流水線下游的另一個 Worker 中。這一點您可以從任務詳細信息的結(jié)果 (Results) 中看到。輸出數(shù)據(jù)包含著每個 Worker 的唯一標識符,會按照隊列順序進行傳遞。

△ 演示 Worker 執(zhí)行失敗的場景

這里為您展示當工作鏈中的某個 Worker 執(zhí)行失敗時的場景。在工作的接續(xù)隊列中插入了一個出錯的 Worker,然后重啟應用。可以看到,上一次運行的結(jié)果仍然在這里供您檢查。這也進一步印證了剛才說到的工作數(shù)據(jù)持久化特性。這里啟動并應用過濾器,選擇 Worker 后再次點擊圖表視圖,這樣就能迅速定位工作開始出錯的位置 (您可以留意這里的感嘆號)。您可以從這里點擊直接進入 Worker 視圖,然后繼續(xù)調(diào)試出錯的會話。

了解更多

通過本文您已經(jīng)對新的后臺任務檢查器做了簡單了解。以上便是 WorkManager 相關(guān)全部內(nèi)容,如需更多資源,請參閱:

歡迎您 點擊這里 向我們提交反饋,或分享您喜歡的內(nèi)容、發(fā)現(xiàn)的問題。您的反饋對我們非常重要,感謝您的支持!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容