RxJava学习笔记

来源:互联网 发布:linux退出help命令 编辑:程序博客网 时间:2024/06/06 04:26

  • Bmob中Observable方式
  • RxJava1使用
  • RxJava2使用

Bmob中Observable方式

compile 'cn.bmob.android:bmob-sdk:3.5.1'

因为BmobSDK从版本 v3.5.0开始 ,最大的亮点在于:支持Rx链式调用。
PS:bmob-sdk中依赖的rxjava版本是1.1.6,Github上最新的是1.2.3

以下是修改正文字体大小的代码,使用到了concatMap操作符

    /**     * 链式调用,     * @see --> https://github.com/bmob/bmob-android-sdk-demo     * @param size     */    void saveTextSize(final int size){        BmobQuery<SettingBean> bmobQuery = new BmobQuery<>();        bmobQuery.addWhereEqualTo("author", BmobUser.getCurrentUser(UserBean.class));        Observable<List<SettingBean>> observable = bmobQuery.findObjectsObservable(SettingBean.class);        observable.concatMap(new Func1<List<SettingBean>, Observable<?>>() {            @Override            public Observable<?> call(List<SettingBean> settingBeen) {                if(settingBeen.size()==0){                    LogUtil.i(TAG, "concatMap=为0");                    UserBean userBean = BmobUser.getCurrentUser(UserBean.class);                    SettingBean settingBean = new SettingBean();                    settingBean.setAuthor(userBean);                    settingBean.settSize(size);                    return settingBean.saveObservable();                }else{                    LogUtil.i(TAG, "concatMap=不为0");                    UserBean userBean = BmobUser.getCurrentUser(UserBean.class);                    SettingBean settingBean =settingBeen.get(0);                    settingBean.setAuthor(userBean);                    settingBean.settSize(size);                    return settingBean.updateObservable(settingBean.getObjectId());                }            }        }).subscribe(new Subscriber<Object>() {            @Override            public void onCompleted() {                LogUtil.i(TAG, "文字大小修改=onCompleted");            }            @Override            public void onError(Throwable throwable) {                LogUtil.i(TAG, "文字大小修改=onError");            }            @Override            public void onNext(Object o) {                LogUtil.i(TAG, "文字大小修改=onNext");            }        });    }

RxJava1使用

compile 'io.reactivex:rxjava:1.2.3'

最基本的用法如下:

 Observable.from(names).subscribe(new Action1<String>() {        @Override        public void call(String s) {            System.out.println("Hello " + s + "!");        }    });

切换线程,示例代码来自这里
有了Rxjava,我们可以跟 new Thread 和 Handler 说byebye了

Observable.empty()          .doOnCompleted(new Action0() {            @Override            public void call() {                Log.i("debug", Thread.currentThread().getName());            }        })        .subscribeOn(Schedulers.io())        .observeOn(AndroidSchedulers.mainThread())        .doOnCompleted(new Action0() {            @Override            public void call() {                Log.i("debug", Thread.currentThread().getName());            }        })        .subscribe();

RxJava2使用

这里有Rxjava2和Rxjava1的不同,https://github.com/ReactiveX/RxJava/wiki/What’s-different-in-2.0

http://search.maven.org/#search%7Cga%7C1%7Cio.reactivex.rxjava

这里写图片描述

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

在build.gradle里加了上面两行依赖后,直接运行就报错如下:
这里写图片描述
简直不知所措,换成另一个项目就正常了(苦笑ing),然后我试了试如下代码:

        Observable.just("哈哈,我在地球上")                .map(new Function<String, Object>() {                    @Override                    public Object apply(String s) throws Exception {                        return s + "AA";                    }                })                .subscribe(new Consumer<Object>() {                    @Override                    public void accept(Object o) throws Exception {                        LogUtil.i("TAG", "ZZZ=" + o.toString());                    }                });

使用了map操作符,打印那段文字加上AA后缀

这里写图片描述

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 十个月的宝宝不爱吃饭怎么办 6年级学生数学差怎么办 打印机打不出来就是一张白纸怎么办 wps表格下拉数字不递增怎么办 wps表格圈怎么打出来怎么办 手表固定圈掉了怎么办 起来觉得头晕头胀怎么办? 孩子不好好写作业怎么办 孩子考试考差了怎么办 孩子计算题马虎大意怎么办 二年级孩子不认字怎么办 发现计算上的错误怎么办 孩子不好好做作业怎么办 手破了红肿了怎么办呢 老师反应孩子在校粗心胆小怎么办 四年级的学生计算粗心怎么办 老打孩子骂孩子怎么办 站久了脚肿了怎么办 孩子初中了书写越来越潦草怎么办 给孩子自由孩子无法无天怎么办 孩子挑食幼儿园老师该怎么办 老师说孩子挑食家长怎么办 工作中老是粗心不细心怎么办 小孩数学总是特别粗心该怎么办 孩子起范疙瘩的怎么办 做题马虎不认真怎么办 孩子考差了家长怎么办 小孩写作业不认真怎么办 小孩不认真检查作业怎么办 一年级的小孩作业不认真怎么办 一年级学生做题粗心怎么办 一年级的学生做题粗心怎么办 孩子做作业注意力不集中怎么办 小学三年孩子抄答案怎么办 孩子写作业不认真审题怎么办 一年级小孩审题不认真怎么办 孩子审题不认真马虎怎么办 孩子做作业不认真审题怎么办? 考老师考砸了怎么办 重要考试考砸了怎么办 二年级孩子做数学题粗心怎么办