Tugas Pekerjaan Rumah: Pelajaran 7 & 8

Daftar Isi:

7.1: Membuat AsyncTask

Membangun dan menjalankan aplikasi

Buka aplikasi SimpleAsyncTask yang Anda buat dalam pelajaran Membuat AsyncTask. Tambahkan ProgressBar yang menampilkan persentase total waktu tidur. Bilah kemajuan akan terisi saat thread AsyncTask tidur dengan nilai rentang 0 hingga 100 (persen).

Petunjuk: Pecah waktu tidur menjadi bagian yang lebih kecil.

Referensi AsyncTask: developer.android.com/reference/android/os/AsyncTask.html Bilah kemajuan diperbarui ketika tugas berlangsung

Jawablah pertanyaan berikut

Pertanyaan 1

Untuk ProgressBar:

  1. Bagaimana Anda menentukan rentang nilai yang bisa ditunjukkan ProgressBar?
  2. Bagaimana Anda mengubah berapa banyak bilah kemajuan yang terisi?

Pertanyaan 2

Jika AsyncTask ditetapkan seperti berikut:

 private class DownloadFilesTask extends AsyncTask<URL, Integer, Long>
  1. Apa tipe nilai yang diberikan ke doInBackground() di AsyncTask?
  2. Apa tipe nilai yang diberikan ke callback yang melaporkan kemajuan tugas?
  3. Apa tipe nilai yang diberikan ke callback yang dijalankan ketika tugas selesai?

Pertanyaan 3

Untuk melaporkan kemajuan pekerjaan yang dieksekusi oleh AsyncTask, apa metode callback yang Anda implementasikan, dan metode yang Anda panggil di subkelas AsyncTask?

  • Mengimplementasikan publishProgress(). Memanggil publishProgress().
  • Mengimplementasikan publishProgress(). Memanggil onProgressUpdate().
  • Mengimplementasikan onProgressUpdate(). Memanggil publishProgress().
  • Mengimplementasikan onProgressUpdate(). Memanggil onProgressUpdate().

Mengirimkan aplikasi Anda untuk dinilai

Panduan untuk penilai

Pastikan aplikasi memiliki beberapa fitur berikut:

  • Layout mencakup ProgressBar yang menyetel atribut tepat untuk menentukan rentang nilai.
  • AsyncTask memecah waktu tidur total menjadi beberapa bagian dan memperbarui bilah kemajuan pada setiap bagian tersebut.
  • AsyncTask memanggil metode tepat dan mengimplementasikan callback tepat untuk memperbarui bilah kemajuan.
  • AsyncTask harus mengetahui tampilan yang perlu diperbarui. Tergantung pada apakah AsyncTask diimplementasikan sebagai kelas inti atau tidak, tampilan bisa diteruskan baik ke konstruktor AsyncTask atau didefinisikan sebagai variabel anggota pada Aktivitas.

7.2: Terhubung ke Internet

Membangun dan menjalankan aplikasi

Membuat aplikasi yang mengambil dan menampilkan materi laman web di URL. Aplikasi menampilkan:

  • Bidang tempat pengguna memasukkan URL
  • Bidang seperti menu atau spinner yang memungkinkan pengguna memilih protokol (HTTP atau HTTPS)
  • Tombol yang mengeksekusi tugas saat diklik
  • Tampilan bergulir dari kode sumber laman web di URL

Gunakan AsyncTaskLoader untuk mengambil kode sumber laman web di URL. Anda harus mengimplementasikan subkelas AsyncTaskLoader.

Jika koneksi ke Internet tidak tersedia ketika pengguna mengeklik tombol, aplikasi harus memberikan respons yang tepat kepada pengguna. Misalnya, aplikasi bisa menampilkan pesan seperti "Check your Internet connection and try again."

Tampilan harus berisi TextView dalam ScrollView yang menampilkan kode sumber, namun tampilan sesungguhnya dari antarmuka sepenuhnya terserah Anda. Layar Anda bisa saja terlihat berbeda daripada tangkapan layar di bawah. Anda bisa menggunakan menu munculan, spinner, atau kotak centang untuk mengizinkan pengguna memilih HTTP atau HTTPS.

Gambar di sebelah kiri menunjukkan layar awal, dengan menu munculan untuk protokol. Gambar di sebelah kanan menunjukkan contoh hasil setelah mengambil sumber laman URL yang diberikan. Mengambil dan menampilkan sumber laman URL

Jawablah pertanyaan berikut

Pertanyaan 1

Izin apa yang dibutuhkan aplikasi Anda untuk terhubung ke Internet?

  • android.permission.CONNECTIVITY
  • android.permission.INTERNET
  • Aplikasi tidak memerlukan izin khusus; semua aplikasi diizinkan untuk terhubung ke Internet.

Pertanyaan 2

Bagaimana aplikasi Anda memeriksa bahwa tersedia konektivitas Internet?

Dalam manifes:

  • permintaan izin ACCESS_NETWORK_STATE
  • permintaan izin ALL_NETWORK_STATE
  • permintaan izin NETWORK_CONNECT

Dalam kode:

  • Membungkus kode untuk terhubung ke Internet dalam blok coba/tangkap, dan menangkap kesalahan NO_NETWORK.
  • Menggunakan ConnectivityManager untuk memeriksa jaringan aktif sebelum terhubung ke jaringan.
  • Menampilkan dialog ke pengguna untuk mengingatkan mereka serta memastikan bahwa konektivitas Internet sudah tersedia sebelum mencoba untuk terhubung ke Internet.

Pertanyaan 3

Di mana Anda mengimplementasikan metode callback loader yang terpicu ketika loader selesai melaksanakan tugasnya?

  • Pada subkelas AsyncTaskLoader. AsyncTaskLoader harus mengimplementasikan LoaderManager.LoaderCallbacks.
  • Pada Aktivitas yang menampilkan hasil tugas. Aktivitas harus mengimplementasikan LoaderManager.LoaderCallbacks.
  • Pada kelas Utilitas yang memperluas Obyek dan mengimplementasikan LoaderManager.LoaderCallbacks.

Pertanyaan 4

Ketika pengguna memutar perangkat, bagaimana AsyncTask dan AsyncTaskLoader berperilaku berbeda apabila mereka sedang dalam proses menjalankan tugas di latar belakang?

  • Pilihan 1
    • AsyncTask yang berjalan menjadi terputus dari Aktivitas meskipun terus berjalan.
    • AsyncTaskLoader yang berjalan menjadi terputus dari Aktivitas namun berhenti berjalan, menjaga sumber daya sistem.
  • Pilihan 2
    • AsyncTask yang berjalan menjadi terputus dari Aktivitas namun berhenti berjalan, menjaga sumber daya sistem.
    • AsyncTaskLoader yang berjalan memulai ulang secara otomatis eksekusi tugasnya dari awal. Aktivitas menampilkan hasil.
  • Pilihan 3
    • AsyncTask yang berjalan menjadi terputus dari Aktivitas meskipun terus berjalan.
    • AsyncTaskLoader yang berjalan terhubung kembali secara otomatis ke Aktivitas setelah rotasi perangkat. Aktivitas menampilkan hasil.

Pertanyaan 5

Bagaimana Anda melakukan inisialisasi AsyncTaskLoader untuk mengerjakan langkah seperti melakukan inisialisasi variabel, yang harus dilakukan sebelum loader mulai menjalankan tugas latar belakang?

  • Pada onCreateLoader() dalam Aktivitas, membuat instance dari subkelas AsyncTaskLoader. Dalam konstruktor loader melakukan tugas inisialisasi.
  • Pada onCreateLoader() dalam Aktivitas, membuat sebuah instance dari subkelas AsyncTaskLoader. Dalam metode init() loader, melakukan tugas-tugas inisialisasi.
  • Pada Aktivitas, mengimplementasikan initLoader() untuk melakukan inisialisasi loader.
  • Melakukan tugas inisialisasi loader pada awal loadInBackgroud() dalam Loader.

Pertanyaan 6

Apa metode yang harus diimplementasikan AsyncTaskLoader?

Mengirimkan aplikasi Anda untuk dinilai

Panduan untuk penilai

Pastikan aplikasi memiliki beberapa fitur berikut:

  • Manifes mencakup permintaan untuk izin yang sesuai.
  • Menggunakan subkelas AsyncTaskLoader.
  • Merespons dengan tepat jika perangkat tidak bisa terhubung ke Internet.
  • Menggabungkan protokol dan laman web untuk membuat URL valid yang digunakan aplikasi untuk terhubung ke Internet.
  • Mengimplementasikan metode callback Loader yang dibutuhkan.
  • Menampilkan hasil dari pengambilan sumber laman web dalam TextView di ScrollView. (Tidak masalah melakukannya dalam Aktivitas yang sama, atau dengan memulai Aktivitas baru.)

7.3: Penerima Siaran

Membangun dan menjalankan aplikasi

  1. Membuat sebuah aplikasi yang disebut BroadcastCounter menggunakan template Empty Activity.
  2. Menggunakan BroadcastReceiver untuk menghitung berapa kali siaran ACTION_POWER_CONNECTED diterima. Petunjuk: Menetapkan BroadcastReceiver Anda sebagai kelas inti dan mendaftarkannya secara dinamis.
  3. Menampilkan hitungan dalam tampilan TextView.

Penghitung tersambung-daya BroadcastReceiver

Jawablah pertanyaan berikut

Pertanyaan 1

Apa perbedaan antara mendaftar penerima siaran secara statis atau dinamis?

  • Mendaftar penerima siaran secara dinamis menghubungkan operasi ke daur hidup aktivitas Anda.
  • Jika mendaftarkan penerima untuk menerima siaran lokal saja, Anda harus mendaftarkannya secara dinamis; pendaftaran statis bukanlah opsi.
  • Mendaftarkan penerima siaran secara statis menciptakan sebuah proses baru dalam menjalankan penerima siaran jika tidak ada proses yang berjalan terkait dengan aplikasi Anda.
  • Semua hal di atas.

Pertanyaan 2

Benar atau salah? Bila penerima siaran terdaftar secara statis, penerima akan merespons kejadian siaran bahkan jika aplikasi Anda tidak berjalan.

Pertanyaan 3

Kelas apa yang digunakan untuk mengurangi risiko keamanan BroadcastReceivers ketika siaran tidak lintas-aplikasi (yaitu, siaran dikirim dan diterima oleh aplikasi yang sama)?

  • SecureBroadcast
  • LocalBroadcastManager
  • OrderedBroadcast
  • SecureBroadcastManager

Mengirimkan aplikasi Anda untuk dinilai

Panduan untuk penilai

Pastikan aplikasi memiliki beberapa fitur berikut:

  • Penerima siaran mendaftar dan membatalkan pendaftaran secara dinamis dalam salah satu pasangan metode daur hidup berikut: OnResume/OnPause, OnCreate/OnDestroy, atau OnStart/OnStop.
  • Penghitung akan ditampilkan dan bertambah saat ponsel dicolokkan.

8.1: Notifikasi

Membangun dan menjalankan aplikasi

Buka aplikasi NotifyMe yang Anda buat dalam pelajaran Notifikasi. Ubah notifikasi yang telah diperbarui dalam aplikasi agar menggunakan layout InboxStyle yang diperluas sebagai ganti BigPictureStyle. Gunakan data string palsu untuk setiap baris dan teks ringkasan. Notifikasi InboxStyle

Catatan: Notifikasi mungkin terlihat sedikit berbeda, tergantung pada API level perangkat.

Jawablah pertanyaan berikut

Pertanyaan 1

Misalkan Anda membuat sebuah aplikasi yang mengunduh sebuah karya seni setiap harinya. Setelah karya seni tersedia, aplikasi menunjukkan notifikasi kepada pengguna, dan pengguna bisa mengunduh atau melewati karya seni sehari. Apa metode PendingIntent yang Anda gunakan untuk memulai layanan mengunduh gambar?

  • Activity.startService()
  • PendingIntent.getBroadcast()
  • PendingIntent.getActivity()
  • PendingIntent.getService()

Mengirimkan aplikasi Anda untuk dinilai

Panduan untuk penilai

Pastikan aplikasi memiliki beberapa fitur berikut:

  • Ketika pengguna mengetuk tombol update, notifikasi akan menjadi notifikasi InboxStyle dengan beberapa baris teks yang merepresentasikan item baris.
  • Layar memiliki baris teks judul dan ringkasan, yang berubah posisinya tergantung pada API level. (Lihat Notifikasi dalam panduan desain material.)
  • Gunakan kelas NotificationCompat.InboxStyle sehingga kompatibel ke belakang.

8.2: Alarm Manager

Membangun dan menjalankan aplikasi

Membuat sebuah aplikasi yang mengirimkan notifikasi saat pukul 11:11 (AM). Layar menampilkan tombol toggle untuk menghidupkan dan mematikan alarm. AlarmManager mengirimkan notifikasi pada pukul 11:11

Catatan: Notifikasi mungkin terlihat sedikit berbeda, tergantung pada API level perangkat.

Jawablah pertanyaan berikut

Pertanyaan 1

Pengaturan waktu tidak pasti menjadi setelan default AlarmManager pada API level apa? (Semua metode set() menggunakan pengaturan waktu tidak pasti, kecuali secara eksplisit dinyatakan lain.)

  • API level 16
  • API level 18
  • API level 19
  • API level 17

Mengirimkan aplikasi Anda untuk dinilai

Panduan untuk penilai

Pastikan aplikasi memiliki beberapa fitur berikut:

  • Alarm menggunakan waktu pasti. Ini berarti bahwa kode memuat pernyataan yang memeriksa bahwa API level perangkat > 19, dan menggunakan metode setExact() jika memang begitu.
  • Aplikasi menampilkan notifikasi saat pukul 11:11 AM.

8.3: JobScheduler

Membangun dan menjalankan aplikasi

Membuat aplikasi yang menyimulasikan unduhan berukuran besar secara terjadwal dengan baterai dan pemakaian data sebagai pertimbangan. Aplikasi berisi tombol bertuliskan "Download Now" dan memiliki beberapa fitur berikut:

  • Aplikasi memberikan notifikasi sebagai pengganti dari melakukan unduhan yang sebenarnya.
  • "Unduhan" dilakukan sekali sehari, saat ponsel dalam keadaan diam namun terhubung ke listrik dan WiFi, atau ketika tombol ditekan.
  • Ketika pengguna mengetuk tombol Download Now, notifikasi "pengunduhan" akan terpicu.
    Petunjuk :Menetapkan kelas JobService sebagai kelas inti. Dengan demikian, tombol Download Now dan JobService bisa memanggil metode yang sama untuk memberikan notifikasi.

JobScheduler mengirimkan notifikasi berdasarkan status ponsel

Catatan: Notifikasi mungkin terlihat sedikit berbeda, tergantung pada API level perangkat.

Jawablah pertanyaan berikut

Pertanyaan 1

Apa kelas yang Anda gunakan jika menginginkan fitur seperti yang disediakan oleh JobScheduler, namun menginginkan fitur bekerja untuk perangkat yang menjalankan API level 20 dan di bawahnya?

  • JobSchedulerCompat
  • FirebaseJobDispatcher
  • AlarmManager

Mengirimkan aplikasi Anda untuk dinilai

Panduan untuk penilai

Pastikan aplikasi memiliki beberapa fitur berikut:

  • Objek JobInfo memiliki 4 set kriteria: setRequiresCharging(), setPeriodic(), setRequiresDeviceIdle(), setRequiredNetworkType()
  • Aplikasi akan mogok bila kelas JobService tidak memiliki konstruktor kosong.

results matching ""

    No results matching ""