查看原文
其他

Android Studio 对现代 WorkManager 的支持

Android Android 开发者 2022-05-12

上一篇文章中,我们提到了现代 WorkManager API 对工具支持方面也进行了改进,本文我们将结合实际案例来看看具体有哪些改进。如果您更喜欢通过视频了解此内容,请在此处查看: 

‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍△‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ Android Studio 对现代 WorkManager 的支持

  • Bilibili 视频链接
    https://www.bilibili.com/video/BV1tS4y1F7Bc/


从 Android Studio Arctic Fox 开始,您可以直接在 Android Studio 内使用后台任务检查器检查和调试 Worker

https://developer.android.google.cn/studio/inspect/task


后台任务检查器是应用检查套件的一部分,它针对应用的几个方面提供更丰富详细的信息。为了充分利用检查器,您的应用需要使用 WorkManager 2.5 或更新的版本。



应用检查器启用方法



首次打开应用检查器的最快方法是: 连续按两下 "Shift" 键,然后在弹出对话框中输入 App Inspection 并按回车键确认。您也可以从菜单栏依次选择: View → Tool Window → App Inspection 来打开应用检查器面板。
△ 打开 App Inspection 面板


示例演示



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

https://github.com/android/architecture-components-samples/tree/master/WorkManagerSample


在 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 调度任务https://developer.android.google.cn/topic/libraries/architecture/workmanager
  • Codelab: 使用 WorkManager 处理后台任务

    https://developer.android.google.cn/codelabs/android-workmanager
  • Codelab: WorkManager 进阶知识
    https://developer.android.google.cn/codelabs/android-adv-workmanager
  • WorkManager 示例代码

    https://github.com/android/architecture-components-samples/tree/main/WorkManagerSample

您也可以通过下方二维码向我们提交反馈,或分享您喜欢的内容、发现的问题。您的反馈对我们非常重要,感谢您的支持!




推荐阅读

如页面未加载,请刷新重试

 点击屏末 | 阅读原文 | 即刻使用 WorkManager 调度任务



除了通过触摸进行交互外,大屏幕设备还支持其他交互形式。设备的屏幕尺寸越大,用户就越有可能使用键盘、手写笔、鼠标、游戏手柄或其他外接设备。如果您想提高应用在这些情况下的易用性,可以计划支持其中一些输入方式,如需了解更多详情,请参阅文章:是时候为各式设备适配完善的输入支持了

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存