探索RxAndroid在android开发中的应用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013519084/article/details/82182278

一、何来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));

猜你喜欢

转载自blog.csdn.net/u013519084/article/details/82182278