一、何来RxAndroid?
RxAndroid is an extension to RxJava built just for Android. It includes special bindings that will make your life easier
rxandorid是为andorid设计的rxjava扩展使用,包含的特殊的绑定将使开发更容易
二、有啥方便使用的?
2.1、AndroidSchedulers的mainThread方便你的UI交互:
retrofitService.getImage(url)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(bitmap -> myImageView.setImageBitmap(bitmap));
2.2、AndroidObservable与Andorid生命周期一同绑定,比如有:bindActivity()和bindFragment(),同时指定observeOn观察线程AndroidSchedulers.mainThread()在Activity或Fragment生命周期结束时不会发送通知事件
AndroidObservable.bindActivity(this, retrofitService.getImage(url))
.subscribeOn(Schedulers.io())
.subscribe(bitmap -> myImageView.setImageBitmap(bitmap));
2.2.1、AndoridObservable.fromBroadcast(),其工作模式就像broadcastreceiver:
IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
AndroidObservable.fromBroadcast(context, filter)
.subscribe(intent -> handleConnectivityChange(intent));
2.3、ViewObservable: 与View的双向绑定,可使用ViewObservable.clicks()获得每次View被点击的事件,或ViewObservable.text()来观察TextView文本的改变
ViewObservable.clicks(mCardNameEditText, false)
.subscribe(view -> handleClick(view));
3、与Retrofit的结合使用
@GET("/user/{id}/photo")
Observable<Photo> getUserPhoto(@Path("id") int id);
使用zip可整合多个网络请求结果一块处理:
Observable.zip(
service.getUserPhoto(id),
service.getPhotoMetadata(id),
(photo, metadata) -> createPhotoWithData(photo, metadata))
.subscribe(photoWithData -> showPhoto(photoWithData));