Android-RxJava 常见API使用以及线程转换要点

本文介绍了RxJava的基本概念,并详细讲解了Observable的创建方法,如create、just、from、interval和timer。接着阐述了map、flatMap、filter和distinct等变换与过滤操作符的使用。在线程转换部分,解释了RxJava的Schedulers,包括observeOn和subscribeOn的作用,并通过案例分析了线程切换的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是RxJava?RxJava 在 GitHub上的自我介绍是 “a library for composing asynchronous and event-based programs using observable sequences for the Java VM”(一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库)。这就是 RxJava。

接下来不多说什么了,直接进入今天的主题吧

一.API使用

RxJava的API使用,包括Observable的创建,以及变换,以及数据的过滤等

1.Observable创建

Observable的创建有几种方式,比如create,just,from,interval,timer

1.1 create方法,是Rxjava中创建Observable最基本的方法,例子如下-创建Observable时,传入onSubsribe作为参数,会被存储在Observable对象中,当Observable被订阅时,就会触发其call方法。

private void testRxMethod_create() {
        Observable<RxBeanInfo> observable = Observable.create(new Observable.OnSubscribe<RxBeanInfo>() {
            @Override
            public void call(Subscriber<? super RxBeanInfo> subscriber) {
                RxBeanInfo info = new RxBeanInfo();
                info.setName("lqm.test");
                subscriber.onNext(info);
                subscriber.onCompleted();
            }});
        Subscriber<RxBeanInfo> subscriber = new Subscriber<RxBeanInfo>()
        {
            @Override
            public void onCompleted() {
                Log.i("rxjava", "onCompleted");
            }
            @Override
            public void onError(Throwable e) {
                Log.i("rxjava", "error");
            }
            @Override
            public void onNext(RxBeanInfo o) {
                Log.i("rxjava", o.getName());
            }};
        //通过调用subscribe方法使观察者和订阅者产生关联,一旦订阅,Observable就会调用call().
        observable.subscribe(subscriber);
    }
11-17 14:27:14.513 14944-14944/pa.test.com.testapp I/rxjava: lqm.test
11-17 14:27:14.513 14944-14944/pa.test.com.testapp I/rxjava: onCompleted

1.2.just—通过调用just方法,传入你想发送的数据源,当订阅者进行订阅的时候就开始打印数据,需要注意的是,just()方法最多可传10个参数,它们会按照传入的参数的顺序来发射它们

private void testRxMethod_just() {
        Observable<String> observable = Observable.just("1", "2", "3","4", "5","6","7","8","9","10");
        Subscriber<String> subscriber = new Subscriber<String>()
        {
            @Override
            public void onCompleted() {
                Log.i("rxjava", "onCompleted");
            }
            @Override
            public void onError(Throwable e) {
                Log.i("rxjava", "error");
            }
            @Override
            public void onNext(String o) {
                Log.i("rxjava", o);
            }};
        observable.subscribe(subscriber);
   }

1.3.from—该方法参数是一个数组,然后from会将其拆分为一个个对象,发射出去

private void testRxMethod_from() {
        List<String> items = new ArrayList<>();
        items.add("1");
        items.add("2");
        items.add("3");
        Observable<String> observable = Observable.from(items);
        Subscriber<String> subscriber = new Subscriber<String>()
        {
            @Override
            public void onCompleted() {
                Log.i("rxjava", "onCompleted");
            }
            @Override
            public void onError(Throwable e) {
                Log.i("rxjava", "error");
            }
            @Override
            public void onNext(String o) {
                Log.i("rxjava", o);
            }};
        observable.subscribe(subscriber);
    }
11-17 14:44:13.043 30921-30921/pa.test.com.testapp I/rxjava: 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值