• 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
    通过微信扫描二维码就可以关注。
    二维码

  • 相关阅读:
    详解用em替换px
    js判断是否为ie浏览器
    nth-child()选择器小结
    HTML5之canvas
    MQTT-SN协议乱翻之消息格式
    MQTT-SN协议乱翻之简要介绍
    MQTT 3.1.1,值得升级的6个新特性
    MQTT 3.1协议非严肃反思录
    MQTT协议笔记之mqtt.io项目HTTP协议支持
    MQTT协议笔记之mqtt.io项目Websocket协议支持
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/7190429.html
Copyright © 2020-2023  润新知