如何清晰地掌握 Android 应用中后台任务的执行情况?
Android Studio 包含了许多像布局检查器和数据库检查器这样的检查器,来帮助您调查并了解应用在运行时的内部状态。在 Android Studio Arctic Fox 中,我们发布了一个新的检查器 (Background Task Inspector),用于帮助您监控和调试在应用中使用 WorkManager 2.5.0 或更高版本所调度的 Worker。
对于运行后台的异步任务,甚至是在应用被关闭之后的情况下,都推荐使用 WorkManager。虽然可以很方便的将任务配置成 WorkManager 的 Worker,但将 Worker 加入到队列中后就很难监控它的执行情况,遇到问题也不方便调试。
WorkManager
https://developer.android.google.cn/topic/libraries/architecture/workmanager
我将使用 architectural-components 仓库中的 WorkManager 示例应用来演示后台任务检查器 (需要将工程中 versions.gradle 里的 versions.work 设置为 2.5.0 或更高版本以使得 Background Task Inspect 更好的工作)。如果您想试一试,可以检出该仓库并随着阅读文章一起尝试。该应用使用 WorkManager 将用户所选择的滤镜应用在已挑选的照片上。用户可以通过该应用在图库中选择一张图片或者简单地使用一张库存照片。为了演示后台任务检查器如何工作,我将会运行应用并选择一张图片来应用滤镜。
architectural-components 仓库
https://github.com/android/architecture-components-samples/tree/main/WorkManagerSample
这些滤镜都是作为 WorkManager Worker 实现的。稍等一会儿该应用就会展示应用了所选滤镜的图片。在不了解示例应用的情况下,来看看我还能通过后台任务检查器知道些什么。
选择菜单栏上的 View > Tool Windows > App Inspection 打开后台任务检查器。
△ View > Tool Windows > App Inspection
后台任务检查器列出了所有正在运行、已失败和已完成作业的类名、当前状态、开始时间、重试次数以及输出数据。点击列表中的一个作业打开 Work Details 面板。
该面板提供了 Worker 的 Description (描述)、Execution (执行情况)、WorkContinuation (工作延续性) 和 Results (结果)。让我们来仔细看看每个部分。
接下来,Execution (执行情况) 一节展示了 Worker 的约束 (如果有)、运行频率、状态以及是哪个类创建了该 worker 并将其加入了队列。
Work Details 面板的最后一节是 Results 窗格。在这一节您能看到选中的 Worker 的开始时间、重试次数及输出数据。
如果您想用后台任务检查器尝试一些更复杂的图形或者制作一些 WorkManager 艺术,请参阅 DummyWorker 代码,并将其加入到 continuation 对象中。
DummyWorker 代码
https://gist.github.com/yenerm/60207091db3b9c1b0eca9b70f6475cd7加入到 continuation 对象
https://gist.github.com/yenerm/b9744b24614fb29cedf47e36df3248b4
后台任务检查器将会跟随 Android Studio Arctic Fox 的发布一同推出,但您现在就可以在最新的 Arctic Fox 版本中试用!如果您的应用使用了 WorkManager,请尝试使用并告诉我们您的想法,或者和我们分享您的 WorkManager 艺术!
👆点击获取 "开发者的日常" 表情包
推荐阅读