Class Activity
adalah komponen penting Android
aplikasi, dan cara aktivitas diluncurkan serta disatukan adalah hal
dari model aplikasi platform. Tidak seperti paradigma pemrograman di
aplikasi mana yang diluncurkan dengan metode main()
, metode Android
sistem memulai kode dalam instance Activity
dengan
memanggil metode callback tertentu yang sesuai dengan tahapan tertentu
siklus hidupnya.
Dokumen ini memperkenalkan konsep aktivitas, dan kemudian memberikan beberapa panduan ringan tentang cara bekerja dengan mereka. Untuk informasi tambahan tentang praktik terbaik dalam merancang aplikasi, lihat Panduan Arsitektur Aplikasi.
Konsep aktivitas
Pengalaman aplikasi seluler berbeda dengan pada versi desktop karena interaksi pengguna dengan aplikasi tidak selalu dimulai di tempat yang sama. Sebaliknya, perjalanan pengguna sering kali dimulai dengan cara yang tidak dapat diduga. Misalnya, jika Anda membuka aplikasi email dari layar utama, Anda mungkin melihat daftar email. Sebaliknya, jika Anda menggunakan aplikasi media sosial yang meluncurkan aplikasi email, Anda mungkin langsung ke layar aplikasi email untuk menulis email.
Class Activity
dirancang untuk memfasilitasi paradigma ini.
Saat satu aplikasi memanggil aplikasi lain, aplikasi panggilan akan memanggil aktivitas di aplikasi lainnya
aplikasi, bukan aplikasi sebagai
satu kesatuan atomik. Dengan cara ini, aktivitas berfungsi sebagai
titik masuk untuk interaksi
aplikasi dengan pengguna. Anda mengimplementasikan sebuah
aktivitas sebagai subclass dari class Activity
.
Aktivitas menyediakan jendela tempat aplikasi menggambar UI-nya. Jendela ini biasanya mengisi layar, tetapi mungkin lebih kecil daripada layar dan mengambang di atas jendela lain. Umumnya, satu aktivitas mengimplementasikan satu layar dalam sebuah aplikasi. Misalnya, salah satu aktivitas aplikasi mungkin menerapkan layar Preferences, saat aktivitas lain menerapkan di layar Pilih Foto.
Sebagian besar aplikasi berisi beberapa layar, yang artinya terdiri dari beberapa aktivitas Anda. Biasanya, satu aktivitas dalam aplikasi ditetapkan sebagai utama aktivitas, yaitu layar pertama yang muncul saat pengguna meluncurkan aplikasi. Setiap aktivitas kemudian dapat memulai aktivitas lain untuk melakukan tindakan yang berbeda. Misalnya, aktivitas utama dalam email sederhana dapat menyediakan layar yang menampilkan kotak masuk email. Dari sana, bagian utama mungkin meluncurkan aktivitas lain yang menyediakan layar untuk tugas seperti menulis e-mail dan membuka masing-masing e-mail.
Meskipun aktivitas bekerja sama untuk membentuk pengalaman pengguna yang kohesif dalam aplikasi, setiap aktivitas hanya terikat longgar ke aktivitas lain; ada biasanya ketergantungan minimal di antara aktivitas dalam aplikasi. Bahkan, sering kali memicu aktivitas milik aplikasi lain. Misalnya, aplikasi {i>browser<i} mungkin meluncurkan aktivitas {i>Share<i} dari aplikasi media sosial.
Untuk menggunakan aktivitas di aplikasi, Anda harus mendaftarkan informasi tentang aktivitas tersebut di manifes aplikasi, dan Anda harus mengelola siklus proses aktivitas dengan tepat. Bagian lain dokumen ini memperkenalkan topik ini.
Mengonfigurasi manifes
Agar aplikasi dapat menggunakan aktivitas, Anda harus mendeklarasikan aktivitas tersebut, dan tertentu di atributnya, dalam manifes.
Mendeklarasikan aktivitas
Untuk mendeklarasikan aktivitas, buka file manifes dan tambahkan <aktivitas> sebagai turunan dari <aplikasi> . Contoh:
<manifest ... > <application ... > <activity android:name=".ExampleActivity" /> ... </application ... > ... </manifest >
Satu-satunya atribut yang diperlukan untuk elemen ini adalah android:name, yang menetapkan nama class aktivitas. Anda juga dapat menambahkan atribut yang menentukan karakteristik aktivitas seperti label, ikon, atau tema UI. Untuk informasi selengkapnya tentang atribut ini dan atribut lainnya, lihat <aktivitas> dokumentasi referensi elemen.
Catatan: Setelah memublikasikan aplikasi, Anda tidak boleh mengubah aktivitas nama. Jika Anda melakukannya, beberapa fungsi mungkin terganggu, seperti pintasan app. Untuk mengetahui informasi selengkapnya tentang perubahan yang harus dihindari setelah publikasi, lihat Hal-hal yang Tidak Bisa Diubah.
Mendeklarasikan filter intent
Filter intent adalah fitur yang sangat canggih di platform Android. Mereka menyediakan kemampuan untuk meluncurkan aktivitas tidak hanya berdasarkan eksplisit, tetapi juga permintaan implisit. Misalnya, permintaan eksplisit mungkin memberi tahu sistem untuk “Memulai aktivitas Kirim Email di aplikasi Gmail". Sebaliknya, permintaan implisit memberi tahu sistem ke “Memulai layar Kirim Email dalam yang dapat melakukan pekerjaannya." Saat UI sistem bertanya kepada pengguna aplikasi mana yang akan digunakan dalam melakukan tugas, itu adalah filter {i>intent<i} yang bekerja.
Anda dapat memanfaatkan fitur ini dengan mendeklarasikan <filter-intent> dalam <activity>. Definisi elemen ini meliputi <action> dan, secara opsional, <kategori> dan/atau <data> . Elemen-elemen ini gabungkan untuk menetapkan jenis intent yang dapat direspons aktivitas Anda. Sebagai dalam contoh, cuplikan kode berikut menunjukkan cara mengonfigurasi aktivitas yang mengirimkan data teks, dan menerima permintaan dari aktivitas lain untuk melakukannya:
<activity android:name=".ExampleActivity" android:icon="@drawable/app_icon"> <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/plain" /> </intent-filter> </activity>
Di sini
contoh, <action>
menetapkan bahwa aktivitas ini mengirimkan data.
Mendeklarasikan <category>
sebagai DEFAULT
akan mengaktifkan aktivitas
untuk menerima permintaan peluncuran. <data>
menentukan tipe data yang
yang bisa dikirim oleh aktivitas ini. Cuplikan kode berikut menunjukkan cara memanggil metode
aktivitas yang dijelaskan di atas:
Kotlin
val sendIntent = Intent().apply { action = Intent.ACTION_SEND type = "text/plain" putExtra(Intent.EXTRA_TEXT, textMessage) } startActivity(sendIntent)
Java
// Create the text message with a string Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.setType("text/plain"); sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage); // Start the activity startActivity(sendIntent);
Mendeklarasikan izin
Anda bisa menggunakan atribut
Tag <activity>
untuk mengontrol
aplikasi mana yang dapat memulai aktivitas tertentu. Aktivitas induk tidak dapat meluncurkan
aktivitas turunan kecuali jika kedua aktivitas memiliki izin yang sama di
manifes. Jika Anda mendeklarasikan
<uses-permission>
untuk aktivitas induk, setiap aktivitas turunan harus memiliki
<uses-permission>
.
Misalnya, jika aplikasi Anda ingin menggunakan aplikasi fiktif bernama SocialApp untuk membagikan postingan di media sosial, SocialApp harus menetapkan izin aplikasi yang memanggilnya harus memiliki:
<manifest> <activity android:name="...." android:permission=”com.google.socialapp.permission.SHARE_POST” />
Kemudian, agar diizinkan memanggil SocialApp, aplikasi Anda harus cocok dengan izin yang ditetapkan di Manifes SocialApp:
<manifest> <uses-permission android:name="com.google.socialapp.permission.SHARE_POST" /> </manifest>
Untuk informasi selengkapnya tentang izin dan keamanan secara umum, lihat Keamanan dan Izin.
Mengelola siklus hidup aktivitas
Selama masa siklusnya berjalan, aktivitas melalui beberapa status. Anda menggunakan serangkaian callback untuk menangani transisi antar-status. Bagian berikut memperkenalkan callback ini.
onCreate()
Anda harus menerapkan callback ini, yang diaktifkan saat sistem membuat
aktivitas Anda. Implementasi Anda harus menginisialisasi komponen penting dari
aktivitas Anda: Misalnya, aplikasi Anda harus membuat tampilan dan mengikat data ke
daftar di sini. Yang terpenting, ini adalah saat
Anda harus memanggil
setContentView()
untuk mendefinisikan tata letak antarmuka pengguna aktivitas.
Saat onCreate()
selesai,
callback berikutnya selalu onStart()
.
onStart()
Saat onCreate()
keluar, aktivitas
memasuki status Dimulai, dan aktivitas menjadi terlihat oleh pengguna.
Callback ini berisi persiapan akhir aktivitas untuk
muncul ke latar depan dan menjadi interaktif.
onResume()
Sistem memanggil callback ini tepat sebelum aktivitas mulai berinteraksi
dengan pengguna. Pada tahap ini, aktivitas berada di bagian atas aktivitas
menumpuk, dan merekam semua input pengguna. Sebagian besar fungsi inti aplikasi
yang diimplementasikan dalam metode onResume()
.
Callback onPause()
selalu
mengikuti onResume()
.
onPause()
Sistem memanggil onPause()
saat aktivitas kalah
dan memasuki status Dijeda. Status ini terjadi ketika, misalnya, pengguna
mengetuk tombol Kembali atau Terbaru. Saat sistem memanggil
onPause()
untuk aktivitas Anda,
secara teknis itu berarti aktivitas Anda masih terlihat sebagian, tetapi paling sering
merupakan indikasi bahwa
pengguna keluar dari aktivitas, dan aktivitas akan segera memasuki
Status dihentikan atau Dilanjutkan.
Sebuah aktivitas dalam status Dijeda dapat terus memperbarui UI jika pengguna mengharapkan UI diperbarui. Contoh aktivitas tersebut antara lain yang menunjukkan navigasi layar peta atau pemutar media sedang diputar. Bahkan jika aktivitas tersebut kehilangan fokus, pengguna mengharapkan UI mereka terus diupdate.
Anda tidak boleh menggunakan
onPause()
untuk menyimpan aplikasi atau pengguna
data, melakukan panggilan jaringan, atau
menjalankan transaksi {i>database<i}.
Untuk informasi tentang menyimpan data, lihat
Menyimpan dan memulihkan status aktivitas.
Setelah onPause()
selesai dieksekusi,
callback berikutnya adalah onStop()
atau
onResume()
, bergantung pada
terjadi setelah aktivitas memasuki status Dijeda.
onStop()
Sistem memanggil onStop()
saat
aktivitas tidak lagi terlihat oleh pengguna.
Ini mungkin terjadi karena aktivitas sedang dihancurkan, aktivitas baru
memulai, atau aktivitas yang ada memasuki
status Dilanjutkan dan menutupi aktivitas yang dihentikan.
Di semua kasus ini, aktivitas yang dihentikan tidak lagi
tidak terlihat sama sekali.
Callback berikutnya yang dipanggil sistem adalah
onRestart()
, jika
aktivitas kembali untuk berinteraksi
dengan pengguna, atau dengan
onDestroy()
jika aktivitas ini benar-benar dihentikan.
onRestart()
Sistem memanggil callback ini jika aktivitas dalam status Berhenti
akan dimulai ulang. onRestart()
memulihkan status aktivitas sejak dihentikan.
Callback ini selalu diikuti oleh
onStart()
.
onDestroy()
Sistem memanggil callback ini sebelum aktivitas dihancurkan.
Callback ini adalah panggilan terakhir yang diterima aktivitas.
onDestroy()
sama dengan
biasanya diterapkan untuk memastikan
bahwa semua sumber daya aktivitas
dirilis saat aktivitas, atau proses yang memuatnya, dihancurkan.
Bagian ini hanya memberikan pengenalan tentang topik ini. Untuk perlakuan mendetail dari siklus proses aktivitas dan callback-nya, lihat Aktivitas Siklus proses.