Broadcast Receivers in Android
Broadcast receivers adalah komponen-komponen aplikasi Android yang memungkinkan kita mengirim atau menerima pesan-pesan. Broadcast receivers mendaftar system broadcast dan/atau custom broadcast serta mendapat notifikasi melalui intent dengan cara-cara berikut:
- Oleh sistem, saat terjadi system event pada suatu aplikasi yang terdaftar.
- Oleh aplikasi lain, jika suatu aplikasi terdaftar untuk custom event.
Broadcast receivers digunakan untuk menerima pesan jika ada perubahan dari suatu sistem. Misalnya saat ponsel dihubungkan dengan charger, sistem akan mendeteksi dan mengirim pesan, kemudian ponsel/aplikasi menerima pesan tersebut yang dintandai dengan tampilan ponsel sedang charging.
Gambar 1 Ilustrasi BroadcastReceiver saat charger connected
Sebuah broadcast sesungguhnya adalah pesan yang dibungkus menggunakan objek intent. Broadcast bisa dibuat secara implicit atau explicit. Berikut adalah perbedaannya:
- Sebuah implicit broadcast adalah pesan yang tidak hanya ditujukan pada aplikasi kita saja, tetapi siapapun. Untuk menerima pesan implicit ini, kita perlu menggunakan sebuah IntentFilter dan mendeklarasikannya dalam manifest. Kita perlu melakukan langkah ini karena sistem operasi Android akan memberikan pesan broadcast pada setiap aplikasi yang sudah memiliki IntentFilter untuk event Karena cara kerjanya ini, implicit broadcast tidak menargetkan aplikasi tertentu. Contoh implicit intent adalah event saat ada SMS masuk.
- Sebuah explicit broadcast adalah pesan yang ditujukan untuk aplikasi-aplikasi tertentu karena sudah menyiapkan suatu komponen. Hal ini terjadi karena ada atribut target yang menyebutkan package name atau class name dari suatu aplikasi.
Ada dua langkah penting untuk membuat sistem dengan sebuah broadcast receiver bekerja, yaitu:
- Mendaftar BroadcastReceiver
Sebuah broadcast receiver perlu diimplementasikan sebagai subclass BroadcastReceiver dan menimpa method onReceive() serta menerima objek Intent sebagai parameter dari pesan. Kita bisa mendaftar BroadcastReceiver dan memspesifikkan intent-filters secara statis dalam manifest atau dinamis dengan registerReceiver().
Contoh:
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, “Intent Detected.”, Toast.LENGTH_LONG).show();
}
}
- Mendaftar MyReceiver
Misal kita ingin mendaftar MyReceiver untuk memantau sistem yang dihasilkan event ACTION_BOOT_COMPLETED yang akan dikeluarkan ketika proses sistem Android selesai:
<application
android:icon=”@drawable/ic_launcher”
android:label=”@string/app_name”
android:theme=”@style/AppTheme” >
<receiver android:name=”MyReceiver”>
<intent-filter>
<action android:name=”android.intent.action.BOOT_COMPLETED”>
</action>
</intent-filter>
</receiver>
</application>
Gambar 2 Ilustrasi BroadcastReceiver
Sekarang, setiap kali perangkat Android diaktifkan, pesan akan disiarkan MyReceiver.
Referensi:
https://medium.com/android-news/local-broadcast-less-overhead-and-secure-in-android-cfa343bb05be
https://techvidvan.com/tutorials/android-broadcast-receivers/
https://data-flair.training/blogs/android-broadcast-receiver/
https://harryridwanramadan.wordpress.com/2014/12/16/mengenal-broadcast-receiver-pada-android/
https://lobothijau.medium.com/broadcast-receivers-untuk-pemula-65a14ed03d88
https://www.wildantechnoart.net/2018/04/cara-menggunakan-broadcastreceiver-pada-android.html
https://docplayer.info/53241631-Pertemuan-ke-7-broadcast-receiver-dan-services.html
http://www.w3big.com/id/android/android-broadcast-receivers.html
https://docs.google.com/presentation/d/1qF9Yeau7uHIP7_aOHWgPU_RnfxACZzGyAZIzcJWz0R0/edit?usp=sharing