जैसा कि आप प्रतिक्रियाशील पारिस्थितिक तंत्र में जानते हैं कि हमारे पास एक ऑब्जर्वेबल है जो डेटा और एक ऑब्जर्वर का उत्सर्जन करता है (इस अवलोकन योग्य उत्सर्जन की सदस्यता लेता है), कुछ भी अजीब नहीं है कि तथाकथित ऑब्जर्वर पैटर्न कैसे काम करता है। एक ऑब्जर्वेबल "चिल्लाता है" कुछ, ऑब्जर्वर को सूचित किया जाता है कि ऑब्जर्वेबल एक निश्चित क्षण में कुछ चिल्लाए।
LiveData
एक पर्यवेक्षक के रूप में सोचें जो आपको पर्यवेक्षकों को प्रबंधित करने की अनुमति देता है जो एक active
राज्य में हैं। अन्य शब्दों में LiveData
, एक सरल अवलोकन है, लेकिन जीवन चक्र का भी ध्यान रखता है।
लेकिन आपके द्वारा अनुरोध किए गए दो कोड मामले देखें:
ए) लाइव डेटा
बी) RXJava
ए) यह लाइवडाटा का एक बुनियादी कार्यान्वयन है
1) आप आमतौर पर अभिविन्यास परिवर्तन को बनाए रखने के लिए ViewModel में LiveData को इंस्टेंट करते हैं (आप LiveData हो सकता है जिसे केवल पढ़ा जाता है, या MutableLiveData जो कि लेखन योग्य है, इसलिए आप आमतौर पर कक्षा LiveData से बाहर निकलते हैं)
2) मुख्य गतिविधि की OnCreate
विधि में (ViewModel नहीं) आप एक ऑब्जर्वर ऑब्जेक्ट (आमतौर पर एक ऑनचेंज विधि) की "सदस्यता" लेते हैं
3) आप लिंक को स्थापित करने के लिए विधि का पालन करते हैं
पहला ViewModel
(व्यावसायिक तर्क का स्वामी)
class ViewModel : ViewModel() { //Point 1
var liveData: MutableLiveData<Int> = MutableLiveData()
}
और यह MainActivity
(जितना संभव हो उतना गूंगा)
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
})
}
}
}
बी) यह RXJava का मूल कार्यान्वयन है
1) आप एक अवलोकनीय घोषित करते हैं
2) आप एक पर्यवेक्षक की घोषणा करते हैं
3) आप ऑब्जर्वर को ऑब्जर्वर के साथ सब्सक्राइब करें
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);
}
});
विशेष रूप LiveData
से प्रयोग किया जाता है Lifecycle
और अक्सर ViewModel
(जैसा कि हमने देखा है) वास्तुकला घटकों के साथ। वास्तव में जब LiveData
एक ViewModel के साथ संयुक्त है , तो आप ऑब्जर्वर में हर बदलाव को वास्तविक समय में अपडेट रखने की अनुमति देते हैं , ताकि घटनाओं को वास्तविक समय में प्रबंधित किया जा सके जहां जरूरत है। जीवन चक्रLiveData
की अवधारणा और संबंधित वस्तुओं को जानने के लिए दृढ़ता से उपयोग करने की अनुशंसा की जाती है LifeCycleOwner / LifeCycle , यह भी मैं आपको रूपांतरणों पर एक नज़र रखने का सुझाव दूंगा , यदि आप वास्तविक जीवन परिदृश्यों में लागू करना चाहते हैं। यहां आप महान कॉमन्सवेयर से कुछ उपयोग के मामले पा सकते हैं ।LiveData
मूल रूपLiveData
से लपेटने के लिए एक सरलीकृतRXJava
, कई घटकों में परिवर्तनों का निरीक्षण करने के लिए एक सुरुचिपूर्ण तरीका है, ताकि घटकों के बीच स्पष्टता पर निर्भरता नियमों को बनाए बिना, ताकि आप कोड का बहुत आसान परीक्षण कर सकें और इसे अधिक पठनीय बना सकें। RXJava, आप LiveData की चीजों को करने की अनुमति देता है और बहुत कुछ। RXJava की विस्तारित कार्यक्षमता के कारण, आप दोनों सरल मामलों के लिए LiveData का उपयोग कर सकते हैं या RXJava की सभी शक्ति का उपयोग एंड्रॉइड आर्किटेक्चर घटकों को ViewModel के रूप में करने के लिएRXJava
कर सकते हैं, बेशक इसका मतलब यह है कि यहकहीं अधिक जटिल हो सकता है, बस लगता है कि इसके बजाय सैकड़ों ऑपरेटर हैं। लाइव मैप के स्विचपाइप और मानचित्र (फिलहाल)।
RXJava संस्करण 2 एक पुस्तकालय है जिसने ऑब्जेक्ट ओरिएंटेड प्रतिमान में क्रांति ला दी है, जो कार्यक्रम के प्रवाह को प्रबंधित करने के लिए एक तथाकथित कार्यात्मक तरीका जोड़ रहा है।