实践:浇花!应用

1. 在您开始之前

简介

在本单元中,您学习了 WorkManager,这是一个用于可延迟后台工作的 Jetpack 库。即使您关闭其源应用程序,此后台工作也保证会运行。

在学习 WorkManager 的过程中,您学习了如何在 Worker 类中定义工作,如何为 Worker 创建 WorkRequest,以及如何入队和安排工作。

在本实践集中,您将运用所学概念并增强**浇花!**应用。

解决方案代码位于末尾。为了充分利用此学习体验,请尝试在查看提供的解决方案代码之前尽可能多地实现和排除故障。正是在这段动手时间里,您学到了最多。

先决条件

您需要什么

  • 一台有互联网连接的电脑和 Android Studio

您将构建什么

在本实践集中,您将运用所学概念并增强**浇花!**应用。

该应用目前在一个滚动列表中显示植物列表。当您点击植物时,该应用允许您设置浇水提醒。

fb69d6519999f217.png d6b68d1e9f1026c5.png

虽然您可以选择提醒时间范围,但提醒通知不会显示。

您的工作是实现提醒通知显示的后台工作。

完成代码后,应用即可在选定的时间段过去后显示提醒通知。

a8f9bceed83af5a9.png

2. 获取启动代码

要开始,请下载启动代码

或者,您可以克隆代码的 GitHub 存储库

$ git clone https://github.com/google-developer-training/basic-android-kotlin-compose-training-waterme.git
$ cd basic-android-kotlin-compose-training-waterme
$ git checkout starter

您可以在此 GitHub 存储库中浏览**浇花!**应用的代码。

运行启动代码

要熟悉启动代码,请完成以下步骤

  1. 在 Android Studio 中打开包含启动代码的项目。
  2. 在 Android 设备或模拟器上运行应用。

您现在可以开始编码了!

3. 使用 WorkManager 安排通知

**浇花!**应用的大部分功能都已实现,除了安排提醒通知的功能。

创建通知的代码位于 WaterReminderWorker.kt 文件中,该文件位于**worker** 包中。 WaterReminderWorker 类扩展了 CoroutineWorker 类,创建通知的代码位于其 doWork() 方法中。

由于通知可能对您来说是一个新主题,因此此代码已完成。

override suspend fun doWork(): Result {

    val plantName = inputData.getString(nameKey)

    makePlantReminderNotification(
        applicationContext.resources.getString(R.string.time_to_water, plantName),
        applicationContext
    )

    return Result.success()
}

您的任务是从 WorkManagerWaterRepository 创建一个 OneTimeWorkRequest,并使用正确的参数调用此方法。

如需更多帮助,请参阅 使用 WorkManager 进行后台工作

创建工作请求

要安排通知,您需要在 WorkManagerWaterRepository.kt 文件中实现 scheduleReminder() 方法。

  1. 使用 Data.Builder 创建一个名为 data 的变量。数据需要包含一个字符串值,其中 WaterReminderWorker.nameKey 是键,传递给 scheduleReminder()plantName 是值。
  2. 使用 WaterReminderWorker 类创建一个一次性工作请求。使用传递给 scheduleReminder() 函数的 durationunit,并将输入数据设置为创建的数据变量。
  3. 调用 workManagerenqueueUniqueWork() 方法。传入植物名称与持续时间的串联,使用 REPLACE 作为 ExistingWorkPolicy,以及工作请求对象。

您的应用现在应该可以按预期工作了。

4. 附加挑战(可选)

为了进行额外的编码练习,请将时间持续时间选项更改为以下内容

  • 5 秒
  • 1 分钟
  • 2 分钟
  • 3 分钟

完成后,测试每个持续时间以确认其按预期工作。

5. 获取解决方案代码

要下载完成的代码实验室的代码,您可以使用以下命令

$ git clone https://github.com/google-developer-training/basic-android-kotlin-compose-training-waterme.git
$ cd basic-android-kotlin-compose-training-waterme
$ git checkout main

或者,您可以将存储库下载为 zip 文件,解压缩它,然后在 Android Studio 中打开它。

如果您想查看此代码实验室的解决方案代码,请在 GitHub 上查看。