apa perbedaan antara sendStickyBroadcast dan sendBroadcast di Android

Jawaban:

120

Inilah yang dikatakan Android SDK tentangsendStickyBroadcast() :

Lakukan sendBroadcast (Intent) yang "melekat", yang berarti Intent yang Anda kirim tetap ada setelah siaran selesai, sehingga orang lain bisa dengan cepat mengambil data tersebut melalui nilai kembalian registerReceiver (BroadcastReceiver, IntentFilter). Dengan cara lain, ini berperilaku sama seperti sendBroadcast (Intent).

Salah satu contoh siaran permanen yang dikirim melalui sistem operasi adalah ACTION_BATTERY_CHANGED. Saat Anda menyerukan registerReceiver()tindakan itu - bahkan dengan null BroadcastReceiver- Anda mendapatkan Intentsiaran terakhir untuk tindakan itu. Karenanya, Anda dapat menggunakan ini untuk mengetahui status baterai tanpa perlu mendaftar untuk semua perubahan status baterai di masa mendatang.

CommonsWare
sumber
6
Seberapa lengket niatnya? Saat Anda memanggil registerReceiver untuk kedua kalinya, apakah itu mengembalikan maksud yang sama lagi? (Anggap tidak ada niat tambahan dengan tindakan itu.)
phreed
22
@phreed: "Saat Anda memanggil registerReceiver untuk kedua kalinya, apakah itu mengembalikan maksud yang sama lagi?" -- Iya. "power down?" - mereka menghilang, sama seperti semua yang ada di RAM. "layar mati?" -- tidak berpengaruh.
CommonsWare
1
Hanya untuk menambahkan bahwa siaran melekat sangat tidak disarankan oleh Nona Hackborn: groups.google.com/d/msg/android-developers/8341SaXhvmY/… . Ini adalah posting lama tapi mungkin masih berlaku
Mr_and_Mrs_D
1
@ Commonsware: Saya tidak dapat memahami poin Anda. Jelaskan dengan contoh maksud normal dan dengan contoh maksud yang lengket untuk skenario yang sama.
Maka
4
Kushal: "Jadi apa yang seharusnya menjadi alternatif untuk siaran permanen sekarang?" - Saya tidak bisa menjawabnya, karena saya tidak tahu kasus penggunaan Anda. Anda dapat mempertimbangkan untuk mengajukan pertanyaan Stack Overflow baru, di mana Anda menjelaskan kebutuhan bisnis Anda, menjelaskan bagaimana Anda berpikir untuk menyelesaikannya melalui siaran permanen, dan meminta cara alternatif untuk memecahkan masalah yang sama.
CommonsWare
54

Jenis : - Lokal, Normal, Beraturan dan Lengket

Siaran Normal

: - gunakan sendBroadcast ()

: - siaran asynchronous

: - setiap penerima menerima siaran bukan urutan tertentu

Siaran Berurutan

: - gunakan sendOrderedBroadcast ()

: - siaran sinkron

: - penerima menerima siaran dalam basis prioritas

: - kami juga dapat membatalkan siaran dalam jenis ini

Siaran Lokal

: - gunakan hanya saat siaran digunakan hanya di dalam proses yang sama

Siaran Tetap

: - maksud siaran normal tidak tersedia lagi setelah ini dikirim dan diproses oleh sistem.

: - gunakan sendStickyBroadcast (Intent)

: - maksud terkait bersifat melekat, artinya maksud yang Anda kirimkan tetap ada setelah siaran selesai.

: - karena ini, orang lain bisa dengan cepat mengambil data tersebut melalui nilai kembalian registerReceiver (BroadcastReceiver, IntentFilter).

: - selain ini sama seperti sendBroadcast (Intent).

Umang Kothari
sumber
sangat membantu ..
Maher Abuthraa
10

sendbroadcast() - siaran normal, tapi kita bisa mengatur prioritas juga.

sendstickybroadcast()- maksud yang diteruskan dengan ini akan melekat pada pengguna di masa mendatang yang mendaftar melalui kode (penerima dinamis). Siaran yang akan tetap menggunakan android, dan akan dikirim ulang atau disiarkan ulang ke permintaan mendatang dari penerima siaran mana pun

Ketika seseorang mengirim siaran permanen menggunakan sendstickyBroadcast(intent); siaran itu akan tersedia untuk pengguna masa depan yang menggunakan penerima dinamis.

Tapi Sekarang Anda tidak harus menggunakan sendStickyBroadcast() metode itu sudah usang

Dari Dokumentasi Android:

Metode ini sudah tidak digunakan lagi di API level 21. Siaran lengket tidak boleh digunakan. Mereka tidak memberikan keamanan (siapa pun dapat mengaksesnya), tidak ada perlindungan (siapa pun dapat memodifikasinya), dan banyak masalah lainnya. Pola yang disarankan adalah menggunakan siaran non-sticky untuk melaporkan bahwa ada sesuatu yang berubah, dengan mekanisme lain bagi aplikasi untuk mengambil nilai saat ini kapan pun diinginkan

Saya harap ini membantu.

Rajesh
sumber