zoukankan      html  css  js  c++  java
  • RxJava系列之中的一个 初识Rxjava

    1.简单介绍

    基础知识

    响应式代码的基本组成部分是Observables和Subscribers(事实上Observer才是最小的构建块,但实践中使用最多的是Subscriber。由于Subscriber才是和Observables的相应的。)。


    Observable发送消息。而Subscriber则用于消费消息。

    消息的发送是有固定模式的。

    Observable能够发送随意数量的消息(包含空消息),
    当消息被成功处理或者出错时。流程结束。Observable会调用它的每一个Subscriber的Subscriber.onNext()函数,并终于以Subscriber.onComplete()或者Subscriber.onError()结束。
    这看起来像标准的观察者模式, 但不同的一个关键点是:Observables一般仅仅有等到有Subscriber订阅它。
    才会開始发送消息(术语上讲就是热启动Observable和冷启动Observable。热启动Observable不论什么时候都会发送消息,
    即使没有不论什么观察者监听它。冷启动Observable仅仅有在至少有一个订阅者的时候才会发送消息(我的样例中都是仅仅有一个订阅者)。这个差别对于開始学习RxJava来说并不重要。)。


    换句话说,假设没有订阅者观察它,那么将不会起什么作用。

    2.第一个Rxjava 程序

    好了。想要在项目中使用rxjava, 仅仅须要通过在gradle中加入例如以下:
    compile’io.reactivex:rxjava:1.0.13’ 眼下最新版本号 (本人使用的是gradle,大家能够通过github查看rxjava的其它部署)

    先来写个小实例:

    (这里仅仅粘贴了部分代码所有代码请看文章底部)通过RxJava给TextView 设置内容。(这里仅仅是做个演示,并没什么卵用)
    先创建Observable
    
     private Observable<String> cerateObserver() {
            return Observable.create(new Observable.OnSubscribe<String>() {
                @Override
                public void call(Subscriber<?

    super String> subscriber) { subscriber.onNext("第一个RxJava"); subscriber.onCompleted(); } }); } 再创建一个 Subscriber private Subscriber<String> createSubscriber() { return new Subscriber<String>() { @Override public void onCompleted() { Log.i(TAG, "on completed"); } @Override public void onError(Throwable e) { Log.i(TAG, "on error"); } @Override public void onNext(String s) { Log.i(TAG, "next Value = " + s); mTextView.setText(s); } }; } //最后把他两绑定一下。 observable.subscribe(subscriber);

    OK,效果图出来了。


    这里写图片描写叙述

    为了打印那几个字写那么多代码也是醉了。


    好吧。 以下看看更简洁的代码。

     //以下的代码乍一看可能难以接受。 慢慢来
            Observable.just("第二个RxjavaDemo").subscribe(new Action1<String>() {
                @Override
                public void call(String s) {
                        mTextView.setText(s);
                }
            });

    从上面的代码中,我们用到了两个新的东西
    1. Observer的just 和 Action1

    事实上 Observer为我们提供了非常多便捷的高速操作。而just的作用是仅仅发送一次任务。然后结束。

    而Action我们能够理解为Subscriber的当中一个子部分。
    比方: Subscriber里有三个函数 onCompleted onError onNext我们能够把它们理解为三个Action
    而Action1代表的是仅仅有一个參数。 相似推理: 会不会有Action2, Action3 等等呢, 等待着大家去发掘
    当然,假设大家用的jdk是1.8 的话,能够通过lambdas表达式来优化代码:

    Observable.just("第二个RxJavaDemo lambdas").subscribe(t -> mTextView.setText(t));

    是不是瞬间感觉碉堡了。

    好了,我们已经学会了just的使用方法。

    事实上 Observable提供了大量的Operators来简化我们代码的写法。


    操作符的作用是在Observable和终于的Subscriber之间改动Observable发出的事件。

    以下我们将介绍到:map操作符的简单使用方法map操作符的作用就是将一个事件转换成还有一个事件。
    举个样例, 比方说: 服务器如今返回了一段字符串,我须要将字符串又一次拼接成新的字符串,并载入数据。


    这时。我们就能够通过map操作。

    Observable.just(url).map(new Func1<String, String>() {
                @Override
                public String call(String s) {
                    return "http://www.baidu.com/" + s;
                }
            }).subscribe(new Action1<String>() {
                @Override
                public void call(String s) {
                    mTextView.setText(s);
                }
            });
            //假设你有lamdba
            Observable.just(url).map(f -> "http://www.baidu.com/" + f).subscribe(t -> mTextView.setText(t));

    map操作符的特点是: 你传递一个Observable对象给他。 他返回你一个Observable对象。 可是不须要相应Observable的返回类型。下一节我们将具体的介绍map的操作,而且顺带着会通过RxJava的衍伸版RxAndroid来写一个最简单的网络请求。敬请期待。

    。。
    (文章内容參考了官方,以及其它几位大神的作品)

    源代码地址:点击进入

    欢迎关注我的微信公众号:androidesigner
    通过微信扫描二维码就可以关注。
    二维码

  • 相关阅读:
    Word 2007 测试
    全硬盘安装Win Vista 6000 RTM方法(转)
    Javascript 解析,格式化日期 (转)
    转:使用hgfs实现vmare文件传输一法,无需任何网络相关设置
    配置和运行版本验证测试(转自msdn)
    TFS错误一则(資料集 'IterationParam' 的查詢執行失敗)
    ghostdoc 1.9.5 for vista install
    January 2007 Community Technology Preview 1 安装
    Changing to a friendly Team Foundation Server Name (舶来品)
    命令行使用小结
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/7190429.html
Copyright © 2011-2022 走看看