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

本文共 1880 字,大约阅读时间需要 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 关键字也有不少好文章:

转载于:https://www.cnblogs.com/CharlesGrant/p/4991104.html

你可能感兴趣的文章
GDI映射模式
查看>>
zabbix邮件报警
查看>>
git的简单使用
查看>>
nrm 的使用说明
查看>>
对复选框自定义样式 优化方法
查看>>
linux开机自检配置文件fstab变只读无法修改问题
查看>>
Linux下基于HTTP协议带用户认证的GIT开发环境设置
查看>>
一篇文章吃透iOS、JS的时间日期(Date, Calendar, Locale, TimeZone)
查看>>
linux中tr的功能多多
查看>>
基于Metronic的Bootstrap开发框架经验总结(16)-- 使用插件bootstrap-table实现表格记录的查询、分页、排序等处理...
查看>>
Java开发者必备十大学习网站
查看>>
【BZOJ】2956:模积和
查看>>
dubbo 配置文件详解
查看>>
【转】博客美化(6)为你的博文自动添加目录
查看>>
XDOJ-1007-易碎的鸟蛋(鹰蛋问题)(dp)
查看>>
【基础算法练习】【最短路+图的遍历+最小生成树】水题 C+ E+ F-----AC题
查看>>
史上最简单MySQL教程详解(基础篇)之多表联合查询
查看>>
去重记录并做成拉链表
查看>>
iis7 500.19 无法访问请求的页面,因为该页的相关配置数据无效
查看>>
48.Course Schedule(课程安排)
查看>>