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 LiveData
sebagai Pengamat yang memungkinkan Anda untuk mengelola Pengamat yang berada dalam active
keadaan. Dalam istilah lain LiveData
adalah 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 OnCreate
metode 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 LiveData
digunakan dengan Lifecycle
dan sering dengan ViewModel
(seperti yang telah kita lihat) komponen arsitektur. Bahkan ketika LiveData
dikombinasikan 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 LiveData
sangat disarankan untuk mengetahui konsep siklus hidup dan objek relatif LifeCycleOwner / LifeCycle , juga saya akan menyarankan Anda untuk melihat Transformasi , jika Anda ingin menerapkan LiveData
dalam skenario kehidupan nyata. Di sini Anda dapat menemukan beberapa use case dari commonsware hebat .
Untuk menyelesaikan pada dasarnyaLiveData
adalah 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 berartiRXJava
jauh 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.