当前位置: 首页 > news >正文

湛江网站定制江阴建设局网站

湛江网站定制,江阴建设局网站,武鸣住房和城乡规划建设局网站,网站域名跟谁买最近在做东西的时候,一直在使用RxJava框架,越是深入了解RxJava,就越觉得这个框架威力实在是太大了。好东西不能一个人独自享受,后面几篇文章我会由浅入深来介绍一下RxJava的使用方法,相信看完之后,你会跟我一样逐渐喜欢上这个“威力无比”的武器! 那么,RxJava到底是什…

最近在做东西的时候,一直在使用RxJava框架,越是深入了解RxJava,就越觉得这个框架威力实在是太大了。好东西不能一个人独自享受,后面几篇文章我会由浅入深来介绍一下RxJava的使用方法,相信看完之后,你会跟我一样逐渐喜欢上这个“威力无比”的武器!

那么,RxJava到底是什么?使用RxJava到底有什么好处呢?其实RxJava是ReactiveX中使用Java语言实现的版本,目前ReactiveX已经实现的语言版本有:

  • Java: RxJava
  • JavaScript: RxJS
  • C#: Rx.NET
  • C#(Unity): UniRx
  • Scala: RxScala
  • Clojure: RxClojure
  • C++: RxCpp
  • Ruby: Rx.rb
  • Python: RxPY
  • Groovy: RxGroovy
  • JRuby:RxJRuby
  • Kotlin: RxKotlin

可以看出ReactiveX在开发应用中如此的火爆。那到底什么是ReactiveX呢?简单来说,ReactiveX就是”观察者模式+迭代器模式+函数式编程”,它扩展了观察者模式,通过使用可观察的对象序列流来表述一系列事件,订阅者进行占点观察并对序列流做出反应(或持久化或输出显示等等);借鉴迭代器模式,对多个对象序列进行迭代输出,订阅者可以依次处理不同的对象序列;使用函数式编程思想(functional programming),极大简化问题解决的步骤。

RxJava的基本概念

RxJava最核心的两个东西就是Observables(被观察者,也就是事件源)和Subscribers(观察者),由Observables发出一系列的事件,Subscribers进行订阅接收并进行处理,看起来就好像是设计模式中的观察者模式,但是跟观察者模式不同的地方就在于,如果没有观察者(即Subscribers),Observables是不会发出任何事件的

由于Observables发出的事件并不仅限于一个,有可能是多个的,如何确保每一个事件都能发送到Subscribers上进行处理呢?这里就借鉴了设计模式的迭代器模式,对事件进行迭代轮询(next()、hasNext()),在迭代过程中如果出现异常则直接抛出(throws Exceptions),下表是Observable和迭代器(Iterable)的对比:

事件(event)迭代器(Iterable)Observable
接收数据T next()onNext(T)
发现错误throws ExceptiononError(Exception)
迭代完成!hasNext()onCompleted()

与迭代器模式不同的地方在于,迭代器模式在事件处理上采用的是“同步/拉式”的方式,而Observable采用的是“异步/推式”的方式,对于Subscriber(观察者)而言,这种方式会更加灵活。

开始准备 Hello World!

说了那么多概念性的东西,可能大家会一头雾水,下面我们就使用获取天气预报的例子来说明吧。

准备工作

  1. 获取天气预报,我们就使用新浪提供的API接口吧,地址如下:
    http://php.weather.sina.com.cn/xml.php?city=%B1%B1%BE%A9&password=DJOYnieT8234jlsK&day=0
    其中,city后的城市转码。
    Password固定
    Day为0表示当天天气,1表示第二天的天气,2表示第三天的天气,以此类推,最大为4

  2. 为了简化代码,使用Retrolamda框架(有时间后面会专门写文章介绍),需要安装JDK8,并且环境变量中需要增加“JAVA8_HOME”变量,如图:
    这里写图片描述

  3. Android Studio版本就用最新的1.2版本+Gradle1.0.0吧。使用Eclipse ADT的朋友,建议赶紧换成Android Studio吧,在android开发上,Android Studio比Eclipse ADT实在是不可同日而语。

环境搭建

首先在Android Studio中新建一个项目,然后修改Project级的build.gradle如下:

buildscript {repositories {jcenter()}dependencies {classpath 'com.android.tools.build:gradle:1.0.0'classpath 'me.tatarka:gradle-retrolambda:3.0.1'}
}allprojects {repositories {jcenter()}
}

module级的build.gradle修改如下:

apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'retrolambda {jdk System.getenv("JAVA8_HOME")oldJdk System.getenv("JAVA6_HOME")javaVersion JavaVersion.VERSION_1_6
}android {compileSdkVersion 21buildToolsVersion "21.1.2"compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}defaultConfig {applicationId "com.example.hesc.weather"minSdkVersion 10targetSdkVersion 21versionCode 1versionName "1.0"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}
}dependencies {compile fileTree(dir: 'libs', include: ['*.jar'])compile 'com.android.support:appcompat-v7:22.0.0'compile 'io.reactivex:rxandroid:0.24.0'
}tasks.withType(JavaCompile){options.encoding="utf-8"
}

开发代码

首先新建布局文件activity_main.xml如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
http://www.yayakq.cn/news/814956/

相关文章:

  • 免费游戏网站模板平面设计图制作
  • 公司网站建设哪个好liferay 做网站
  • 免费架设网站wordpress怎么才能快
  • 郑州企业建站公司定制庭院设计师培训
  • 广东世纪达建设集团有限公司官方网站seo快速排名点击
  • 福州企业建设网站网络舆情监测软件
  • 网站开发优势WordPress全站跳转
  • 小企业网站建设厂家有哪些个人网站制作的主要内容
  • 与网站建设有关的课程和知识点门户网站开发哪种语言比较好
  • 建筑平面设计图seo优化厂家
  • 手机端网站建设教程视频哈尔滨网站建设哪儿好薇
  • 做网站的时候说需求的专业术语国家高新技术企业查询系统
  • 企业网站如何做架构图cms 企业
  • 不同网站建设报价单济南本地网站
  • 网站建设销售模式wordpress导出文章变id
  • 郑州做网站锐网站建设2017排名
  • 网站开发保存学习进度的方案wordpress 首页文章列表
  • 网站推广优化外包便宜江苏省建设集团有限公司网站首页
  • 广州市城乡和建设局网站如何做打码网站
  • 用手机能创建网站吗汉中城乡建设网站
  • 汉口企业制作网站的云趣在线企业网站建设
  • 网站开发 集成包敬请期待下一句怎么对
  • 网站建设需要哪些条件提升wordpress访问速度
  • 网站推广平台搭建苏州关键词网站排名
  • 如何建立网站数据库wordpress+手机端
  • 旅游目的地网站建设wordpress搜索ajax
  • 上海中学门户网站登陆自己做网站需要做服务器
  • 义乌高端网站设计品牌在线查看qq空间网站
  • com网站怎么注册开网店怎么找货源啊
  • 富民网站建设鞍山市城乡建设局网站