Panduan pemrosesan latar belakang

Pemrosesan data di latar belakang adalah bagian penting dalam pembuatan aplikasi Android, yang responsif bagi pengguna Anda dan ramah pengguna di platform Android. Panduan ini menjelaskan kategori tugas latar belakang, memberikan kriteria untuk mengategorikan tugas, dan merekomendasikan API yang sebaiknya digunakan untuk menjalankan tugas.

Prinsip panduan

Secara umum, tugas apa pun yang memerlukan waktu lebih dari beberapa milidetik akan dialihkan ke thread latar belakang. Tugas umum yang berjalan lama meliputi hal-hal seperti mendekode bitmap, mengakses penyimpanan, mengerjakan model machine learning (ML), atau melakukan permintaan jaringan.

Kategori tugas latar belakang

Tugas latar belakang dikelompokkan ke kategori berikut:

  • Segera
  • Ditangguhkan
  • Tepat waktu

Untuk mengategorikan tugas, jawab pertanyaan berikut dan jelajahi pohon keputusan yang sesuai di gambar 1:

Apakah tugas harus diselesaikan saat pengguna berinteraksi dengan aplikasi?
Jika demikian, tugas ini dapat dikategorikan sebagai eksekusi segera. Jika tidak, lanjutkan ke pertanyaan kedua.
Apakah tugas harus dijalankan pada waktu yang tepat?
Jika tugas harus dijalankan pada waktu yang tepat, kategorikan tugas sebagai tepat waktu.

Sebagian besar tugas tidak harus dijalankan pada waktu yang tepat. Umumnya, tugas memungkinkan sedikit perbedaan saat dijalankan yang didasarkan pada kondisi seperti ketersediaan jaringan dan daya baterai yang tersisa. Tugas yang tidak harus dijalankan pada waktu yang tepat dapat dikategorikan sebagai ditangguhkan.

pohon keputusan ini akan membantu Anda menentukan kategori terbaik untuk
            tugas latar belakang
Gambar 1. Pohon keputusan ini akan membantu Anda menentukan kategori terbaik untuk tugas latar belakang.

Bagian berikut ini menjelaskan solusi yang direkomendasikan untuk setiap jenis tugas latar belakang.

Sebaiknya gunakan coroutine Kotlin untuk tugas yang harus berakhir saat pengguna keluar dari cakupan tertentu atau menyelesaikan interaksi. Banyak library Android KTX yang memuat cakupan coroutine siap pakai untuk komponen aplikasi umum seperti ViewModel dan siklus proses aplikasi umum.

Untuk pengguna bahasa pemrograman Java, lihat Menggunakan thread di Android untuk opsi yang direkomendasikan.

Untuk tugas yang harus segera dijalankan dan memerlukan pemrosesan berkelanjutan, meskipun pengguna menempatkan aplikasi di latar belakang atau perangkat dimulai ulang, sebaiknya gunakan WorkManager dan dukungannya untuk tugas yang berjalan lama.

Dalam kasus tertentu, misalnya pemutaran media atau navigasi aktif, Anda dapat menggunakan Layanan latar depan secara langsung.

Tugas yang ditangguhkan

Setiap tugas yang tidak terhubung langsung ke interaksi pengguna dan dapat dijalankan kapan saja di masa mendatang dapat ditangguhkan. Solusi yang direkomendasikan untuk tugas yang ditangguhkan adalah WorkManager.

WorkManager memudahkan penjadwalan tugas asinkron yang dapat ditangguhkan dan diperkirakan akan berjalan meskipun aplikasi ditutup atau perangkat dimulai ulang. Lihat dokumentasi untuk WorkManager guna mempelajari cara menjadwalkan jenis tugas ini.

Tugas tepat waktu

Tugas yang harus dijalankan pada waktu yang tepat dapat menggunakan AlarmManager.

Untuk mempelajari AlarmManager lebih lanjut, lihat Menjadwalkan alarm berulang.