查看原文
其他

Android函数响应式编程最新RxJava-基本用法

2017-08-16 qzs 安卓干货铺

推荐github地址:https://github.com/javaexception

推荐简书地址:http://www.jianshu.com/u/2a55d6e39135

推荐CSDN地址:http://blog.csdn.net/qq_34908107

函数响应式编程

函数响应式编程是一种编程范式,可以极大的简化项目,特别是处理嵌套回调的异步时间、复杂的列表过滤和变换或者时间的相关问题.而RxJava就是函数响应式编程的重要框架。

RxJava简述

我们在Github上搜索RxJava时,我们会发现,显示的是ReactiveX/RxJava,因为RxJava是ReactiveX的一种Java的一种实现,ReactiveX的全名是Reactive Extensions,简写为Rx. Github对RxJava的描述为" a library for composing asynchronous and event-based programs using observable sequences for the Java VM.",开发者可以用Observables表示异步数据流,用Schedulers参数化异步数据流的并发处理,其实RxJava就是一个实现异步操作的库。

RxJava的好处

我们原来在做异步操作时,都是用Android的AsyncTask和Handler,这样会使得项目越来越复杂,而RxJava却能够保持清晰的逻辑。RxJava原理是创建一个Observable,使用各种操作符来建立起链式操作,最后发射给Subscruber处理.(RxJava有4个角色:Observable、Observer、Subscruber、subject)。

RxJava的基本实现

在项目Gradle:

compile 'io.reactivex.rxjava2:rxandroid:2.0.1' compile 'io.reactivex.rxjava2:rxjava:2.1.0'

Rxjava基本用法:

1.创建Observer(观察者):

//创建一个观察者Observer    Observer<String> observer=new Observer<String>() {        @Override        public void onSubscribe(@NonNull Disposable d) {            Log.e(TAG,"onSubscribe"+d);        }        @Override        public void onNext(@NonNull String s) {            Log.e(TAG,"onNext"+s);        }        @Override        public void onError(@NonNull Throwable e) {            Log.e(TAG,"onError");        }        @Override        public void onComplete() {            Log.e(TAG,"onComplete");        }    };

上面的四个方法是必须要完成的,onError是时间异常。onNext表示普通的事件,将要处理的事件添加到时间队列中。 onComplete表示事件的完结。

2.创建Observable(被观察者)

   //创建被观察者,Observable    Observable<String> observable=Observable.create(new ObservableOnSubscribe<String>() {        @Override        public void subscribe(@NonNull ObservableEmitter<String> e) throws Exception {            //这是将时间添加到队列的其中一种方式            Log.e(TAG,"发送");            e.onNext("hello");  //发送的字符串            e.onComplete();//发送完成        //   subscriber.onComplete();        }    });

将事件添加到任务队列有三种方法,上面是第一种。第二种是通过just方法来添加代码如下:

 observable=Observable.just("hello");

第三种方式from方法来实现,代码如下所示:

String [] s={"hello"}; observable=Observable.fromArray(s);

3.Subscribe(订阅)

  observable.subscribe(observer);

就介绍到这,我会持续更新的...希望大家关注,一起进步!


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存