rxjava系列(一)-- 初识Rxjava

本文介绍了RxJava的基本概念,包括Observable、Subscriber及subscribe的作用,并通过多个示例展示了RxJava在实际开发中的应用。

rxjava是一个使用观察者序列实现的基于事件的异步响应库。

笔者rxjava总结基于rxjava1,rxjava2相比于rxjava1变动还是蛮大的。引入rxjava1:

compile 'io.reactivex:rxjava:1.3.0'

1.我对rxjava的理解

这里写图片描述

与其说rxjava是一个响应式异步操作库,我更愿意将之理解为一种响应式编程的思想,它打破了我们流程式编码的习惯。
对于Android开发人员来说,异步操作以及回调的思想都不陌生。View的点击事件绑定,网络请求数据的回调等等,通常我们都使用接口的方式实现异步方法的回调。rxJava就是针对异步事件的响应式编程库,可以很好的解决Android编码中异步事件的监听处理,这也是为什么rxJava系列的库能在Android领域如此火爆。

2.我对rxjava的总结

在学习使用rxJava过程中会遇到很多阻碍,首先我们需要理解响应式编程思想,说白了就是Android中的回调;其次我们要了解观察者模式,也就是被观察者要在数据或业务变更的时候通知其绑定的所有观察者,观察者就可以实时的监听被观察者的动向。网上学习rxJava的文章也很多,我这里并不想对Rxjava的所有知识进行总结,我只是完全从应用的角度出发去理解rxjava。
学习rxJava首先需要搞懂3个概念:

  • Observable,被观察者。也就是事件源,被观察者的行为变更才会引起观察者的回调监听;
  • Subscriber,观察者。当被观察者行为变更的时候,其观察者会执行监听方法。
  • subscribe,订阅动作。//被观察者订阅观察者.被观察者告诉观察者发生变化了,观察者执行对应的方法。(注:可能刚开始理解会有点别扭,但是站在代码角度,你会非常好理解。代码并不具备主观能动性,因此代码通过被观察者中的观察者去发布相应的事件来实现其回调方法的监听)

这里写图片描述

3.实例

实例一

下面代码是最简单直接的Rxjava的使用。

public static void main(String[] args){

        //创建一个被观察者
        Observable<String> strObservable = Observable.create(
                new Observable.OnSubscribe<String>() {
                    @Override
                    public void call(Subscriber<? super String> subscriber) {
                        subscriber.onNext("Hello world!");
                        subscriber.onCompleted();
                    }
                });

        //观察者
        Subscriber<String> mySubscriber = new Subscriber<String>() {
            @Override
            public void onCompleted() {

            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onNext(String o) {
                System.out.println(o);
            }
        };

        strObservable.subscribe(mySubscriber);//被观察者订阅观察者.被观察者告诉观察者发生变化了,观察者执行对应的方法
    }

创建被观察者,观察者,二者进行绑定。创建被观察者的时候会执行其Call方法,Call方法中持有被观察者中拥有的观察者对象;Rxjava中观察者都会有onCompleted()、onError()、onNext()方法;这样,当被观察者订阅观察者的时候,被观察者会执行其call方法,call方法中我简单的进行了观察者方法的调用,这样就会执行观察者的对应方法。

实例二

具体使用中,我们很少会用上面的流程去进行实现(毕竟看上去太啰嗦,不但没有简化代码,反而使代码看起来复杂了很多)。

private void test1(){
        //创建一个被观察者,just方式创建
        Observable<String> strObservable = Observable.just("Hello world!");

        //观察者,Action是继承Subscriber的
        Action1<String> action1 = new Action1<String>() {
            @Override
            public void call(String s) {
                System.out.print(s);
            }
        };

        strObservable.subscribe(action1);//被观察者订阅观察者.被观察者告诉观察者发生变化了,观察者执行对应的方法
    }

这里我们简化了被观察者对象和观察者对象的创建。Rxjava提供了多种方式创建观察者和被观察者对象,我们通常用just()方法去创建被观察者,用Action1替换观察者(其实Action1是继承了Subscriber,为了简化代码我们通常用Action1)。

实例三

我们继续对上面的代码进行简化

private void test2(){
        Observable.just("Hello world!")
                .subscribe(new Action1<String>() {
                    @Override
                    public void call(String s) {
                        System.out.println(s);
                    }
                });
    }

这才是Rxjava的正确打开方式有木有。

实例四

前面被观察者的事件源都是字符串数据,我们希望传递其他数据,比如多个字符串:

 /**
     * just 发送多个T,Subscriber会依次处理
     */
    private void test3(){

        Observable.just("wang","jie")
                .subscribe(new Action1<String>() {
                    @Override
                    public void call(String s) {
                        System.out.println(s);
                    }
                });

    }

比如一个list:

    /**
     * from()发送一个集合
     * */
    private void test4(){
        List<String> list = new ArrayList<>();
        list.add("篮球");
        list.add("足球");
        list.add("乒乓球");
        Observable.from(list)
                .subscribe(new Action1<String>() {
                    @Override
                    public void call(String s) {
                        System.out.println(s);
                    }
                });
    }

实例五

除此之外,其实Rxjava提供了很多观察者和被观察者的实例化方法供开发者进行使用。下面是一个定时创建被观察者的实例,可用作定时器的实现:

/**
     * .使用interval( ),创建一个按固定时间间隔发射整数序列的Observable,可用作定时器:
     */
    private void test6(){
        Observable.interval(1, TimeUnit.SECONDS)
                .subscribe(new Action1<Long>() {
                    @Override
                    public void call(Long aLong) {
                        System.out.println("每间隔" + aLong + "s发送一次");
                    }
                });
    }

介绍到这里,相信我们对RxJava已经有了一个基础的认识。接下来会继续对rxjava的使用进行分析。

欢迎大家留言讨论。

### SQL Server 入门介绍 SQL Server 是由 Microsoft 开发的关系型数据库管理系统(RDBMS),广泛应用于企业级数据存储和管理。以下是关于 SQL Server 的基础知识: #### 1. 数据库的概念 数据库是种有组织的数据集合,通常以表格形式存在。SQL Server 使用结构化查询语言(Structured Query Language, SQL)来管理和操作这些数据[^1]。 #### 2. SQL Server 的主要功能 SQL Server 提供了系列强大的功能,用于处理各种规模的企业需求: - **数据存储**:支持大规模数据的高效存储。 - **事务管理**:通过 ACID 属性(原子性、致性、隔离性和持久性)确保数据的安全性和可靠性。 - **安全性**:提供多层次的安全机制,保护敏感数据免受未经授权访问。 - **可扩展性**:能够轻松适应从小型企业到大型企业的不同需求[^2]。 #### 3. 安装与配置 为了使用 SQL Server,需要完成以下几个关键步骤: - 下载并安装 SQL Server 软件包。 - 配置实例名称和服务账户。 - 设置防火墙规则以便远程连接。 - 测试连接以验证安装成功。 #### 4. 基本命令 熟悉些常用的 SQL 查询语句对于初学者非常重要: ```sql -- 创建个新的数据库 CREATE DATABASE MyDatabase; -- 查看所有可用的数据库 SELECT name FROM sys.databases; -- 切换至指定数据库 USE MyDatabase; -- 创建张新表 CREATE TABLE Employees ( ID INT PRIMARY KEY, Name NVARCHAR(50), Position NVARCHAR(50) ); -- 插入记录 INSERT INTO Employees (ID, Name, Position) VALUES (1, 'John Doe', 'Manager'); -- 查询记录 SELECT * FROM Employees; ``` 上述代码展示了如何创建数据库、切换数据库、构建表以及执行简单的插入和查询操作。 #### 5. 学习资源 除了官方文档外,还有许多在线视频教程可以帮助新手快速上手 SQL Server。例如 Bilibili 上提供了详细的安装指南和实践案例。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值