rx-java
RxJava के साथ Android
खोज…
टिप्पणियों
RxAndroid बहुत सारी सुविधाओं के साथ एक पुस्तकालय हुआ करता था। इसे कई अलग-अलग पुस्तकालयों में संस्करण 0.25.0 से 1.x तक स्थानांतरित किया गया है।
1.0 से पहले उपलब्ध सुविधाओं को लागू करने वाले पुस्तकालयों की एक सूची यहां रखी गई है ।
RxAndroid - AndroidSchedulers
यह सचमुच Android पर RxJava का उपयोग शुरू करने की आवश्यकता है।
अपनी श्रेणी निर्भरता में RxJava और RxAndroid को शामिल करें:
// use the last version
compile 'io.reactivex.rxjava2:rxjava:2.1.1'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
RxJava के लिए RxAndroid मुख्य अतिरिक्त Android मुख्य थ्रेड या UI थ्रेड के लिए एक शेड्यूलर है।
आपके कोड में:
Observable.just("one", "two", "three", "four", "five")
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
data -> doStuffOnMainThread(),
error -> handleErrorOnMainThread()
)
या आप एक कस्टम Looper लिए एक समयबद्धक बना सकते हैं:
Looper backgroundLooper = // ...
Observable.just("one", "two", "three", "four", "five")
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.from(backgroundLooper))
.subscribe(
data -> doStuffOnMainThread(),
error -> handleErrorOnMainThread()
)
अधिकांश अन्य चीजों के लिए आप मानक RxJava प्रलेखन का उल्लेख कर सकते हैं।
RxLifecycle घटक
RxLifecycle लाइब्रेरी एंड्रॉइड गतिविधियों और टुकड़ा जीवनचक्र के लिए आसान बाध्यकारी टिप्पणियों को आसान बनाता है।
ध्यान रखें कि एक ऑब्जर्वेबल को अनसब्सक्राइब करना भूल जाने से मेमोरी लीक हो सकती है और सिस्टम द्वारा नष्ट किए जाने के बाद अपनी गतिविधि / विखंडन को जीवित रख सकती है।
लाइब्रेरी को निर्भरता में जोड़ें:
// use the last version available
compile 'com.trello:rxlifecycle:0.6.1'
compile 'com.trello:rxlifecycle-components:0.6.1'
फिर Rx* कक्षाएं बढ़ाता है:
-
RxActivity/support.RxFragmentActivity/support.RxAppCompatActivity -
RxFragment/support.RxFragment -
RxDialogFragment/support.RxDialogFragment -
support.RxAppCompatDialogActivity
जब आप एक पर्यवेक्षक की सदस्यता लेते हैं, तो आप सभी सेट होते हैं:
someObservable
.compose(bindToLifecycle())
.subscribe();
यदि आप इसे onCreate() गतिविधि की विधि में निष्पादित करते हैं, तो यह स्वचालित रूप से onDestroy() में सदस्यता समाप्त कर देगा।
उसी के लिए होता है:
-
onStart()->onStop() -
onResume()->onPause() -
onAttach()->onDetach()(केवल टुकड़ा) -
onViewCreated()->onDestroyView()(टुकड़ा केवल)
एक विकल्प के रूप में आप घटना को निर्दिष्ट कर सकते हैं जब आप चाहते हैं कि सदस्यता समाप्त हो जाए:
एक गतिविधि से:
someObservable
.compose(bindUntilEvent(ActivityEvent.DESTROY))
.subscribe();
एक टुकड़े से:
someObservable
.compose(bindUntilEvent(FragmentEvent.DESTROY_VIEW))
.subscribe();
आप जीवन चक्र घटनाओं को सीधे सुनने के लिए विधि lifecycle() का उपयोग करके जीवनचक्र को देखने योग्य भी प्राप्त कर सकते हैं।
RxLifecycle का उपयोग प्रत्यक्ष रूप से जीवनचक्र के लिए इसे पास करने में भी किया जा सकता है:
.compose(RxLifecycleAndroid.bindActivity(lifecycle))
आप को संभालने के लिए की जरूरत है Single या Completable तुम सिर्फ क्रमशः जोड़कर यह कर सकते हैं forSingle() या forCompletable बाँध विधि के बाद:
someSingle
.compose(bindToLifecycle().forSingle())
.subscribe();
इसका उपयोग नवी पुस्तकालय के साथ भी किया जा सकता है।
Rxpermissions
यह लाइब्रेरी नए Android M अनुमति मॉडल के साथ RxJava के उपयोग की अनुमति देती है।
लाइब्रेरी को निर्भरता में जोड़ें:
Rxjava
dependencies {
compile 'com.tbruyelle.rxpermissions:rxpermissions:0.8.0@aar'
}
Rxjava2
dependencies {
compile 'com.tbruyelle.rxpermissions2:rxpermissions:0.8.1@aar'
}
प्रयोग
उदाहरण (संक्षिप्तता के लिए रेट्रोलंबा के साथ, लेकिन आवश्यक नहीं):
// Must be done during an initialization phase like onCreate
RxPermissions.getInstance(this)
.request(Manifest.permission.CAMERA)
.subscribe(granted -> {
if (granted) { // Always true pre-M
// I can control the camera now
} else {
// Oups permission denied
}
});
और पढ़ें: https://github.com/tbruyelle/RxPims