Eğer reaktif ekosistemde Bildiğiniz gibi biz sahip gözlemlenebilir olduğunu yayar veri ve Gözlemci bu gözlemlenebilir emisyon abone (haberdar olsun) o garip şey sözde Gözlemci Desen şekilde işliyor. Gözlemlenebilir bir şey "bağırır", Gözlemci belli bir anda Gözlenebilir bir şey bağırdığını bildirir.
LiveDataBir activedurumdaki Gözlemcileri yönetmenizi sağlayan bir Gözlemlenebilir olarak düşünün . Diğer bir deyişle LiveData, basit bir Gözlemlenebilir ama aynı zamanda yaşam döngüsüyle de ilgilenir.
Ancak, istediğiniz iki kod örneğini görelim:
A) Canlı Veri
B) RXJava
A) Bu, LiveData'nın temel bir uygulamasıdır
1) yönlendirme değişikliğini korumak için genellikle LiveData'yı ViewModel'de başlatırsınız (salt okunur LiveData'ya veya yazılabilir MutableLiveData'ya sahip olabilirsiniz, bu nedenle genellikle LiveData sınıfından dışarıda kalırsınız)
2) Ana Etkinlik OnCreateyönteminde (ViewModel değil) bir Observer nesnesine (genellikle bir onChanged yöntemi) "abone olursunuz"
3) bağlantı kurmak için gözlemlemek yöntemi başlatmak
İlk olarak ViewModel(iş mantığının sahibi)
class ViewModel : ViewModel() { //Point 1
var liveData: MutableLiveData<Int> = MutableLiveData()
}
Ve bu MainActivity(mümkün olduğunca aptal)
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) Bu RXJava'nın temel uygulamasıdır
1) Gözlemlenebilir beyan edersiniz
2) Bir Gözlemci Beyan Edersiniz
3) Gözlemlenebilir ile Gözlemci'ye abone olursunuz
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);
}
});
Özellikle LiveDatakullanılır Lifecycleve genellikle ile ViewModelmimarisi bileşenlerine (Görüldüğü gibi). Aslında LiveDatabir ViewModel ile birleştirildiğinde , Gözlemci'deki her değişiklik gerçek zamanlı olarak güncel tutmanıza izin verir , böylece olaylar gereken yerde gerçek zamanlı olarak yönetilir. Kullanım için LiveDataşiddetle kavramını bilmek tavsiye edilir ömrü ve bağıl nesneleri LifeCycleOwner / yaşam döngüsü , ayrıca sana bir göz için öneririm Dönüşümler Uygulamak istiyorsanız, LiveDatagerçek hayat senaryolarında. Burada harika ortak yazılımlardan bazı kullanım durumlarını bulabilirsiniz .
Sarmak için temeldeLiveDatabir basitleştirilmişRXJavaçok daha kolay kod test edebilirsiniz ve çok daha okunabilir hale böylece, bileşenler arasındaki açık sözde bağımlılık kurallarını yaratmadan birden fazla bileşeni üzerinde değişiklik gözlemlemek için, zarif bir şekilde. RXJava, LiveData ve daha fazlasını yapmanıza izin verir. RXJava'nın genişletilmiş işlevleri nedeniyle, LiveData'yı basit durumlar için kullanabilir veya RXJava'nın tüm gücünü ViewModel olarak Android Mimarisi bileşenlerini kullanmaya devamRXJavaedebilirsiniz, elbette buçok daha karmaşık olabileceğianlamına gelir,bunun yerine yüzlerce operatör olduğunu düşünün SwitchMap ve LiveData Haritası (şu anda).
RXJava sürüm 2, Nesne Tabanlı paradigmada devrim yaratan ve programın akışını yönetmek için işlevsel bir yol ekleyen bir kütüphanedir.