manajer siaran lokal sudah ditinggalkan, gunakan implementasi dari pola yang dapat diamati sebagai gantinya.
androidx.localbroadcastmanager
sedang tidak digunakan dalam versi 1.1.0
Alasan
LocalBroadcastManager
adalah bus peristiwa di seluruh aplikasi dan mencakup pelanggaran lapisan di aplikasi Anda; komponen apa pun dapat mendengarkan acara dari komponen lain mana pun. Ini mewarisi batasan use-case yang tidak perlu dari sistem BroadcastManager; pengembang harus menggunakan Intent meskipun objek hanya hidup dalam satu proses dan tidak pernah meninggalkannya. Untuk alasan yang sama, itu tidak mengikuti BroadcastManager bijaksana.
Ini menambah pengalaman pengembang yang membingungkan.
Penggantian
Anda dapat mengganti penggunaan LocalBroadcastManager
dengan implementasi lain dari pola yang dapat diamati. Tergantung pada kasus penggunaan Anda, opsi yang sesuai mungkin LiveData
atau aliran reaktif.
Keuntungan dari LiveData
Anda dapat memperluas LiveData
objek menggunakan pola tunggal untuk membungkus layanan sistem sehingga mereka dapat dibagikan di aplikasi Anda. The LiveData
objek menghubungkan ke layanan sistem sekali, dan kemudian pengamat setiap yang perlu sumber daya hanya dapat menonton LiveData
objek.
public class MyFragment extends Fragment {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
LiveData<BigDecimal> myPriceListener = ...;
myPriceListener.observe(this, price -> {
// Update the UI.
});
}
}
The observe()
Metode melewati fragmen, yang merupakan contoh dari LifecycleOwner
, sebagai argumen pertama. Melakukan hal itu menunjukkan bahwa pengamat ini terikat pada Lifecycle
objek yang terkait dengan pemilik, yang berarti:
Jika objek Siklus Hidup tidak dalam keadaan aktif, maka pengamat tidak dipanggil bahkan jika nilainya berubah.
Setelah objek Siklus Hidup dihancurkan, pengamat akan dihapus secara otomatis
Fakta bahwa LiveData
objek sadar siklus berarti Anda dapat membaginya di antara beberapa aktivitas, fragmen, dan layanan.