博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android RxJava
阅读量:6827 次
发布时间:2019-06-26

本文共 1824 字,大约阅读时间需要 6 分钟。

GitHut 地址: 

build.gradle:

1 compile 'io.reactivex:rxandroid:1.2.1'2 compile 'io.reactivex:rxjava:1.2.2'

(1)RxJava简介:

RxJava 是一个在Java虚拟机上实现的响应式扩展库:提供了基于observable序列实现的异步调用及基于事件编程。

RxJava最核心的两个东西是Observables(被观察者,事件源)和Subscribers(观察者)。Observables发出一系列事件,Subscribers处理这些事件。

它扩展了观察者模式,支持数据、事件序列并允许你合并序列,无需关心底层的线程处理、同步、线程安全、并发数据结构和非阻塞I/O处理。

一个Observable可以发出零个或者多个事件,知道结束或者出错。每发出一个事件,就会调用它的Subscriber的onNext方法,最后调用Subscriber.onNext()或者Subscriber.onError()结束。

RxJava是由Netflix开发的反应式扩展(Reactive Extensions)的Java实现。Reactive Extensions是这样一个第三方库:它结合了可观察集合和LINQ式查询以达到异步和基于事件的编程效果

Netflix将这个库托管到了Github上,支持Java6以上的版本并且使它可以用于Android App开发。

它支持Java5及更高版本,并支持其他一些基于JVM的语言,如Groovy、Clojure和Scala。

我们假设你已经对RxJava有一些了解。如果没有的话,强烈建议先看看和Netflix在的前几页。

(2)观察者模式

  1. Observable和Subscriber可以做任何事情

Observable可以是一个数据库查询,Subscriber用来显示查询结果;Observable可以是屏幕上的点击事件,Subscriber用来响应点击事件;Observable可以是一个网络请求,Subscriber用来显示请求结果。

  2. Observable和Subscriber是独立于中间的变换过程的。

在Observable和Subscriber中间可以增减任何数量的map。整个系统是高度可组合的,操作数据是一个很简单的过程。

(3)实现内容

e.g. 

Model类中name内容变化时,View(Activity)中Subscribers这个name的变化,同步更新Ui上的Name。

我想到的方式是
在Model中创建Obervable,在setName方法中,写入nameObservable.onNext(newName)这一行。

(ios开发有ReactiveCocoa这个框架,类似rxjava,可以监听成员变量值变化)

ReactiveCocoa是比RxJava更方便一些,RxJava一个比较好的解决这个问题的方法就是为view model创建一个compose subscription,可以参考这个项目 https://github.com/tehmou/rx-android-architecture

逐步学习:

 

注意对持有的context导致的内存泄露)解决方法,把Subscription加入到队列中进行管理,当activity关闭时,对Subscription进行清除。

 

 Flipoard 的扔物线了,著名的开源库 MaterialEditText 作者,还是著名的 codeKK 上 Dagger 源码解析作者。

  • GitHub 主页:
  • 他的 RxJava 教程:
接下来再推荐一位对岸的小伙伴 yongjhih ,同样是 RxJava 的狂热爱好者,虽然不如大头鬼和扔物线著名,不过教程和代码都是相当漂亮,他的 GitHub 上有很多关于 RxJava 的 Examples 。
  • GitBook 主页:
  • GitHub 主页:
 
代码 
最主要的4个类:Observable、OnSubscribe、Operator、Subscriber
接下来再推荐几个:
  • 开发技术前线:
  • 韩国 GDG 的 RxJava 实例:
  • 一些 RxJava Examples:
  • 中文 RxDocs: 可以在这里下载 GitBook:
  • 泡网上搜索 RxJava 关键字也有不少好文章:

转载地址:http://jmukl.baihongyu.com/

你可能感兴趣的文章
日常工作中,个人总结的 - Git - 常用操作方法 (一)
查看>>
面试中被面试官问到的问题答案(一)
查看>>
使用属性Props完成一张卡片
查看>>
49. Group Anagrams
查看>>
TypeScript实现数据结构(一)栈,队列,链表
查看>>
IOS评论框不贴底(ios12新bug)
查看>>
26. Remove Duplicates from Sorted Array
查看>>
Jenkins in Action :GitLab 部署 Maven 项目
查看>>
从0开始构建SpringCloud微服务(1)
查看>>
Linux Shell 生成随机数和随机字符串
查看>>
泛型之通配符
查看>>
PHP_SELF变量解析和重复路径解决
查看>>
解决mac下webstorm编辑器识别less的问题
查看>>
微服务所需组件(大部分是Spring Cloud,持续更新)
查看>>
JavaScript闯关笔记
查看>>
Nacos系列:基于Nacos的配置中心
查看>>
做Web前端开发的你必须会这几点!
查看>>
react特性
查看>>
PAT A1037
查看>>
免费小说阅读小程序
查看>>