Latihan: Aplikasi Water Me!

1. Sebelum memulai

Pengantar

Di unit ini, Anda telah mempelajari WorkManager, yang merupakan library Jetpack untuk pekerjaan latar belakang yang dapat ditangguhkan. Pekerjaan latar belakang ini menjamin aplikasi untuk tetap berjalan meskipun Anda menutup aplikasi sumbernya.

Saat mempelajari WorkManager, Anda telah mempelajari cara menentukan pekerjaan di class Pekerja, cara membuat WorkRequest untuk Pekerja, serta cara mengantrekan dan menjadwalkan pekerjaan.

Dalam set latihan ini, Anda akan menggunakan konsep yang telah Anda pelajari untuk meningkatkan kualitas aplikasi Water Me!.

Kode solusi tersedia di akhir. Untuk mendapatkan hasil maksimal dari pengalaman belajar ini, cobalah untuk mengimplementasikan dan memecahkan masalah sebanyak mungkin sebelum melihat kode solusi yang diberikan. Di waktu inilah Anda akan belajar paling banyak.

Prasyarat

Yang akan Anda butuhkan

  • Komputer yang memiliki akses internet dan Android Studio

Yang akan Anda build

Dalam set latihan ini, Anda akan menggunakan konsep yang telah Anda pelajari untuk meningkatkan kualitas aplikasi Water Me!.

Aplikasi saat ini menampilkan daftar tanaman dalam daftar scroll. Saat Anda mengetuk tanaman, aplikasi memungkinkan Anda menyetel pengingat untuk menyirami tanaman.

fb69d6519999f217.png d6b68d1e9f1026c5.png

Meskipun Anda dapat memilih jangka waktu pengingat, notifikasi pengingat tidak ditampilkan.

Tugas Anda adalah mengimplementasikan pekerjaan latar belakang untuk menampilkan notifikasi pengingat.

Setelah Anda menyelesaikan kode, aplikasi dapat menampilkan notifikasi pengingat setelah durasi waktu yang dipilih berlalu.

a8f9bceed83af5a9.png

2. Mendapatkan kode awal

Untuk memulai, download kode awal:

Atau, Anda dapat membuat clone repositori GitHub untuk kode tersebut:

$ 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

Anda dapat menjelajahi kode untuk aplikasi Water Me! di repositori GitHub ini.

Menjalankan kode awal

Untuk memahami kode awal, selesaikan langkah-langkah berikut:

  1. Buka project dengan kode awal di Android Studio.
  2. Jalankan aplikasi di perangkat Android atau emulator.

Kini Anda siap untuk memulai coding!

3. Menjadwalkan notifikasi menggunakan WorkManager

Fungsi untuk aplikasi Water Me! sebagian besar diterapkan kecuali kemampuan untuk menjadwalkan notifikasi pengingat.

Kode untuk membuat notifikasi ada di file WaterReminderWorker.kt, yang ada di paket pekerja. Class WaterReminderWorker memperluas class CoroutineWorker dan kode untuk membuat notifikasi berada di dalam metode doWork().

Dikarenakan notifikasi mungkin merupakan topik baru bagi Anda, kode ini sudah selesai.

override suspend fun doWork(): Result {

    val plantName = inputData.getString(nameKey)

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

    return Result.success()
}

Tugas Anda adalah membuat OneTimeWorkRequest yang memanggil metode ini dengan parameter yang benar dari WorkManagerWaterRepository.

Untuk mendapatkan bantuan tambahan, lihat Pekerjaan Latar Belakang dengan WorkManager.

Membuat permintaan pekerjaan

Untuk menjadwalkan notifikasi, Anda harus mengimplementasikan metode scheduleReminder() dalam file WorkManagerWaterRepository.kt.

  1. Buat variabel bernama data dengan Data.Builder. Data harus terdiri dari nilai string tunggal dengan WaterReminderWorker.nameKey sebagai kuncinya dan plantName yang diteruskan ke scheduleReminder() sebagai nilainya.
  2. Buat permintaan pekerjaan satu kali dengan class WaterReminderWorker. Gunakan duration dan unit yang diteruskan ke fungsi scheduleReminder() dan tetapkan data input ke variabel data yang Anda buat.
  3. Panggil metode enqueueUniqueWork() workManager. Teruskan nama tanaman yang disambungkan dengan durasi, gunakan REPLACE sebagai ExistingWorkPolicy, dan objek permintaan pekerjaan.

Sekarang aplikasi Anda seharusnya sudah berfungsi sesuai dengan yang diharapkan.

4. Tantangan tambahan (opsional)

Untuk latihan coding tambahan, ubah opsi durasi waktu menjadi seperti berikut:

  • 5 detik
  • 1 menit
  • 2 menit
  • 3 menit

Setelah selesai, uji setiap durasi untuk memastikan bahwa kode tersebut sudah berfungsi seperti yang diharapkan.

5. Mendapatkan kode solusi

Untuk mendownload kode codelab yang sudah selesai, Anda dapat menggunakan perintah berikut:

$ 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

Atau, Anda dapat mendownload repositori sebagai file ZIP, lalu mengekstraknya, dan membukanya di Android Studio.

Jika Anda ingin melihat kode solusi untuk codelab ini, lihat kode tersebut di GitHub.