Android学习笔记——RxJava2基本使用

笔记尚未完成,需更新

依赖

//RxJava2
    implementation 'io.reactivex.rxjava2:rxjava:2.0.2'
    implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'

使用方法

 

观察者与被观察者

 

observable ——被观察者, 可理解为一个绑定了事件Listener的View,被观察者通过使用发射器传递数据到订阅对象,也可以说是观察者,通过观察者接受数据对数据进行操作(一般是更新UI), 一般用于异步处理操作(网络数据获取或文件io流

 

被观察者使用以下方法创建对象

泛型的数据类型根据需要传递的数据类型自己选择

Observable.create( ObservableOnSubscribe<T> )

Observable.create(new ObservableOnSubscribe<Integer>() {
    @Override
    public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {
        emitter.onNext(1);
        emitter.onNext(2);
        emitter.onNext(3);
    }

});

subcribe方法的调用,是在有订阅时才会调用,当订阅( 被观察者对象调用subcribe() 方法 observable.subcribe(简化订阅 or 观察者对象observer ) )后,会开始调用此处的subscribe方法,在 观察者 的 onSubcribe之后运行

也就是,当订阅完成时,此处代码的顺序会是

    观察者 的 onSubcribe

    被观察者的 subcribe

    当发射器 noNext 后

    会先调用doOnNext (当观察者有调用并实现doOnNext时

    然后调用map(当观察者有调用并实现map时, 该方法作用是在数据到达观察者处前修改数据或数据类型并返回数据

    最后数据到达观察者的 onNext 方法,在此处对UI进行更新

 

emitter为发射器对象,可通过发射器对象调用onNext方法来传递数据

emitter有以下几个方法

onNext 传递数据

onError 抛出错误,当抛出错误时,还在事件消息队列中的将不做处理。只能抛出一次错误!!

onComplete 当前事件已完成,还在事件消息队列中的将不做处理

tryOnError  尝试抛出错误

在观察者中,有相对应的方法来响应发射器发出的事件信号

在简化的订阅中,有 accept 方法来对发射器的 onNext 方法做出响应

 

observer —— 观察者, 类似Qt的槽,会对被观察者发过来的事件进行响应。被观察者通过发射器调用onNext 方法传递数据,观察者接收到事件信号会调用noNext 方法针对数据完成操作(一般都会把订阅对象,也就是观察者角色的处理放在主线程,一般用于UI更新的操作

 

观察者的创建

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

    }

    @Override
    public void onNext(Integer integer) {
        Log.i("onNext", String.valueOf(integer));
    }

    @Override
    public void onError(Throwable e) {

    }

    @Override
    public void onComplete() {

    }
};

onSubscribe 是 在订阅绑定完成时 会调用的方法

onComplete 是 在事件消息队列完成任务时 会调用的方法

                      发射器无调用时,并不触发该方法

onNext 当发射器调用onNext方法传递数据后,观察者接收数据,并调用方法

onError 当发射器调用onError发出错误消息时,观察者接收异常信息,并调用方法

 

订阅

订阅的操作,触发观察者 onSubscribe 方法被观察者 subscribe  方法

observable.subscribe(observer);

简化之后的写法

Observable.create(new ObservableOnSubscribe<Integer>() {
    @Override
    public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {
        Log.i("subscribe", "subscribe");
        emitter.onNext(1);
        emitter.onNext(2);
        emitter.onNext(3);
    }
}).subscribe(new Observer<Integer>() {
    @Override
    public void onSubscribe(Disposable d) {
        Log.i("onSubscribe", "onSubscribe");
    }

    @Override
    public void onNext(Integer integer) {
        Log.i("onNext", String.valueOf(integer));
    }

    @Override
    public void onError(Throwable e) {

    }

    @Override
    public void onComplete() {

    }
});

简化订阅

Consumer 用于接收单个值,并进行处理

Function 用于变换对象,例如 在map中,将一个数据进行处理,并返回其他类型的数据

observable.map(new Function<Integer, String>() {
    @Override
    public String apply(Integer integer) throws Exception {
        Log.i("map", String.valueOf(integer * 2));
        
        return integer + "--String";
    }
});

BiConsumer 接收两个值,并进行处理

Predicate 用于判断

 

线程操作

内置线程

Schedulers.io()  代表io操作的线程, 通常用于网络,读写文件等io密集型的操作;

Schedulers.computation() 代表CPU计算密集型的操作, 例如需要大量计算的操作;

Schedulers.newThread() 代表一个常规的新线程;

AndroidSchedulers.mainThread() 代表Android的主线程

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JDBC(Java Database Connectivity)是Java语言操作数据库的基础API,它提供了一种标准的方法来连接和操作各种关系型数据库。 JDBC的基本使用分为以下几个步骤: 1. 加载驱动程序:在使用JDBC操作数据库之前,需要先加载相应的驱动程序。不同的数据库需要加载不同的驱动程序,一般情况下驱动程序的jar包都会提供。 ```java Class.forName("com.mysql.jdbc.Driver"); ``` 2. 建立连接:使用DriverManager类的getConnection()方法连接数据库。 ```java String url = "jdbc:mysql://localhost:3306/test?useSSL=false"; String username = "root"; String password = "123456"; Connection conn = DriverManager.getConnection(url, username, password); ``` 其中url为连接数据库的URL,username和password为连接数据库的用户名和密码。 3. 创建Statement对象:通过Connection对象的createStatement()方法创建一个Statement对象,用于执行SQL语句。 ```java Statement stmt = conn.createStatement(); ``` 4. 执行SQL语句:可以通过Statement对象的execute()或executeQuery()方法执行SQL语句,如果是更新操作则使用executeUpdate()方法。 ```java ResultSet rs = stmt.executeQuery("SELECT * FROM users"); ``` 5. 处理结果集:如果执行的SQL语句返回了结果集,则可以通过ResultSet对象进行处理。 ```java while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); System.out.println("id: " + id + ", name: " + name); } ``` 6. 关闭连接:使用完数据库后需要关闭连接,释放资源。 ```java rs.close(); stmt.close(); conn.close(); ``` 以上就是JDBC的基本使用过程,通过JDBC可以实现Java程序与数据库的交互,完成各种数据库操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值