RxJava-android三方框架

文章介绍了RxJava在Android开发中用于异步处理的作用,以及如何通过观察者模式实现。提到了创建Observer和Subscriber的方式,创建被观察者如create、just和fromArray等方法,以及如何订阅和指定线程进行操作。最后指出RxJava的丰富操作符使其在处理异步任务时具有灵活性。
摘要由CSDN通过智能技术生成

RxJava-android三方框架

简述

RxJava是用来干嘛的? 异步,为处理异步而生!!!
在安卓中,执行耗时操作,除了使用自带的API来创建子线程,也可以用一些其他的框架,其中RxJava就是。

前提

对于RxJava的实现是使用了观察者模式的,这个需要先了解一下观察者模式

使用

先来看一段代码

        TextView tv = findViewById(R.id.tv);
        tv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });

在这段代码中,对比观察者,tv是被观察者,new的内部类是观察者,setOnClickListener是建立关系的桥梁,当tv改变后,会通知内部类,内部类会做出响应。

ok,进入正题

先创建观察者:

方式1:

       Observer<String> observer = new Observer() {
           @Override
           public void onSubscribe(Disposable d) {
               
           }

           @Override
           public void onNext(Object o) {

           }

           @Override
           public void onError(Throwable e) {

           }

           @Override
           public void onComplete() {

           }
       };

方式2:

        Subscriber<String> stringSubscriber = new Subscriber<String>() {
            @Override
            public void onSubscribe(Subscription s) {
                
            }

            @Override
            public void onNext(String s) {

            }

            @Override
            public void onError(Throwable t) {

            }

            @Override
            public void onComplete() {

            }
        };

比较容易看到的是没有什么具体的区别,事实上,从源码来看,好像有一个onStart的区别,后续研究源码再附。

创建被观察者

create方法

        Observable<String> subscribe = Observable.create(new ObservableOnSubscribe<String>() {
            @Override
            public void subscribe(ObservableEmitter<String> emitter) throws Exception {
                
            }
        });

just方法

Observable<String> just = Observable.just("A", "B", "C");

fromArray方法

 String[] arr = {"A","B","C"};
        Observable<String> observable = Observable.fromArray(arr)

这里的create,just,fromArray称为操作符,RxJava有很多的操作符,具体可以参考RxJava操作大全

订阅

observable.subscribe(observer);
// 或者:
observable.subscribe(subscriber);

从逻辑上看是被观察者订阅观察者,这样设计的原因是为了流式 API 的设计。

那么RxJava是怎样实现异步处理的呢,看代码

int drawableRes = ...;
ImageView imageView = ...;
Observable.create(new OnSubscribe<Drawable>() {
    @Override
    public void call(Subscriber<? super Drawable> subscriber) {
        Drawable drawable = getTheme().getDrawable(drawableRes));
        subscriber.onNext(drawable);
        subscriber.onCompleted();
    }
})
.subscribeOn(Schedulers.io()) /***/ 指定上面的call发生在 IO 线程***   
.observeOn(AndroidSchedulers.mainThread()) /***/ 指定 下面的subscriber 的回调发生在主(UI)线程***
.subscribe(new Observer<Drawable>() {
    @Override
    public void onNext(Drawable drawable) {
        imageView.setImageDrawable(drawable);
    }

    @Override
    public void onCompleted() {
    }

    @Override
    public void onError(Throwable e) {
        Toast.makeText(activity, "Error!", Toast.LENGTH_SHORT).show();
    }
});

RxJavad的学习学不完

这个框架的用法是很多的,操作符真的太多了,到用的时候再补充吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值