Seperti yang mungkin Anda ketahui dalam ekosistem reaktif, kami memiliki Observable yang memancarkan data dan Observer yang berlangganan (mendapatkan pemberitahuan) dari emisi yang Dapat Diamati ini, tidak ada yang aneh adalah cara kerjanya yang disebut Pola Observer. Suatu "teriakan" sesuatu yang Dapat Diobservasi, Pengamat mendapat pemberitahuan bahwa Observable meneriakkan sesuatu pada saat tertentu.
Berpikirlah LiveDatasebagai Pengamat yang memungkinkan Anda untuk mengelola Pengamat yang berada dalam activekeadaan. Dalam istilah lain LiveDataadalah Observable sederhana tetapi juga menjaga siklus hidup.
Tapi mari kita lihat dua kasus kode yang Anda minta:
A) Data Langsung
B) RXJava
A) Ini adalah implementasi dasar LiveData
1) Anda biasanya instantiate LiveData di ViewModel untuk mempertahankan perubahan orientasi (Anda dapat memiliki LiveData yang hanya baca, atau MutableLiveData yang dapat ditulis, sehingga Anda biasanya mengekspos luar dari kelas LiveData)
2) dalam OnCreatemetode Aktivitas Utama (bukan ViewModel) Anda "berlangganan" objek Observer (biasanya metode onChanged)
3) Anda meluncurkan metode mengamati untuk membuat tautan
Pertama ViewModel(memiliki logika bisnis)
class ViewModel : ViewModel() { //Point 1
var liveData: MutableLiveData<Int> = MutableLiveData()
}
Dan ini adalah MainActivity(sebodoh mungkin)
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val ViewModelProvider= ViewModelProviders.of(this).get(ViewModel::class.java)
ViewModelProvider.observe(this, Observer {//Points 2 and 3
//what you want to observe
})
}
}
}
B) Ini adalah implementasi dasar RXJava
1) Anda mendeklarasikan Observable
2) Anda mendeklarasikan Pengamat
3) Anda berlangganan Observable dengan Observer
Observable.just(1, 2, 3, 4, 5, 6) // Point 1
.subscribe(new Subscriber() { //Points 2 & 3
@Override
public void onCompleted() {
System.out.println("Complete!");
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Double value) {
System.out.println("onNext: " + value);
}
});
Khususnya LiveDatadigunakan dengan Lifecycledan sering dengan ViewModel(seperti yang telah kita lihat) komponen arsitektur. Bahkan ketika LiveDatadikombinasikan dengan ViewModel memungkinkan Anda untuk terus diperbarui secara real time setiap perubahan dalam Pengamat, sehingga acara dikelola secara real time di mana diperlukan. Untuk menggunakan LiveDatasangat disarankan untuk mengetahui konsep siklus hidup dan objek relatif LifeCycleOwner / LifeCycle , juga saya akan menyarankan Anda untuk melihat Transformasi , jika Anda ingin menerapkan LiveDatadalam skenario kehidupan nyata. Di sini Anda dapat menemukan beberapa use case dari commonsware hebat .
Untuk menyelesaikan pada dasarnyaLiveDataadalah cara yang disederhanakanRXJava, elegan untuk mengamati perubahan di banyak komponen tanpa membuat aturan ketergantungan yang disebut antar komponen secara eksplisit, sehingga Anda dapat menguji kode dengan lebih mudah dan membuatnya lebih mudah dibaca. RXJava, memungkinkan Anda untuk melakukan hal-hal LiveData dan banyak lagi. Karena fungsi yang diperluas dari RXJava, Anda berdua dapat menggunakan LiveData untuk kasus-kasus sederhana atau memanfaatkan semua kekuatan RXJava tetap menggunakan komponen Arsitektur Android sebagai ViewModel , tentu saja ini berartiRXJavajauh lebih rumit, anggap saja ada ratusan operator sebagai gantinya. SwitchMap dan Peta LiveData (saat ini).
RXJava versi 2 adalah perpustakaan yang merevolusi paradigma Berorientasi Objek, menambahkan cara fungsional yang disebut untuk mengelola aliran program.