Android(7):多线程之RxJava

最近在学RxJava,发现还是很重要的,但是自己也只学会了如何用RxJava在子线程中执行耗时操作再通知主线程更新UI,所以先记录下如何用RxJava实现多线程耗时操作,因此这篇只贴代码。

一、RxJava介绍

RxJava是一个基于事件订阅的异步执行的一个类库。是一个近几年很流行的异步开发框架。主要特点有:

  1. 异步的
  2. 基于观察者设计模式(Observer、Observable)
  3. Subscribe(订阅)

二、RxJava多线程耗时操作

  1. 添加依赖,注意版本,如果需要的话将compile换成implementation。
compile 'io.reactivex:rxjava:1.0.14' 
compile 'io.reactivex:rxandroid:1.0.1
  1. 耗时操作(如下载,UI更新倒计时)
public String longRunningOperation() { //隔1s更新UI
    try {
    	Thread.sleep(1000);
    }
    catch (InterruptedException e) {

    }
    return "Complete!";
}
  1. 观察者模式
  • 对于任何 Observable 你可以定义在两个不同的线程
  • 使用 Observable.observeOn可以定义在一个线程上, 可以用来监听和检查从 Observable 最新发出的 items (Subscriber 的 onNext,onCompleted 和 onError 方法会执行在 observeOn 所指定的线程上)
  • Observable.subscribeOn() 来定义一个线程,将其运行我们 Observable 的代码(长时间运行的操作)。
	//创建被观察者
	Observable operationObservable = Observable.create(new Observable.OnSubscribe() {
        @Override
        public void call(Object o) {
            while(true){
                Subscriber subscriber = (Subscriber)o;
                String ret = longRunningOperation();
                subscriber.onNext(ret);
            }
        } 
    }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread());
	
	operationObservable.subscribe(new Subscriber() {
            @Override
            public void onCompleted() {

            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onNext(Object o) {
                //UI线程操作
            }
        });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值