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.
LiveData
Bir active
durumdaki 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 OnCreate
yö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 LiveData
kullanılır Lifecycle
ve genellikle ile ViewModel
mimarisi bileşenlerine (Görüldüğü gibi). Aslında LiveData
bir 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, LiveData
gerçek hayat senaryolarında. Burada harika ortak yazılımlardan bazı kullanım durumlarını bulabilirsiniz .
Sarmak için temeldeLiveData
bir 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 devamRXJava
edebilirsiniz, 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.