Refrogit与RxJava结合的使用    达到了非常简单就可以完成请求网络 一:1.0示例: 1.导入依赖 compile 'io.reactivex:rxjava:1.3.4'compile 'io.reactivex:rxandroid:1.2.1'compile 'com.squareup.retrofit2:retrofit:2.0.0'compile 'com.squareup.retrofit2:converter-gson:2.0.2'//解析compile 'com.squ…
前言: 其实RxJava引起的内存泄漏是我无意中发现了,本来是想了解Retrofit与RxJava相结合中是如何通过适配器模式解决的,结果却发现了RxJava是会引起内存泄漏的,所有想着查找一下资料学习一下如何解决RxJava引起的内存泄漏,就查到了利用Rxlifecycle开源框架可以解决,今天周末就来学习一下如何使用Rxlifecycle. 引用泄漏的背景: RxJava作为一种响应式编程框架,是目前编程界网红,可谓是家喻户晓,其简洁的编码风格.易用易读的链式方法调用.强大的异步支持等使得R…
前言: 上篇文章学习了Android事件总线管理开源框架EventBus,EventBus的出现大大降低了开发成本以及开发难度,今天我们就利用目前大红大紫的RxJava来实现一下类似EventBus事件总线管理,现在很多人都在说用这种方式来替代EventBus,今天我们从开发效率,开发难度等维度来分析一下到底能不能取代EventBus? 先回顾一下什么是EventBus?请看这篇文章Android消息传递之EventBus 3.0使用详解(三) 消息传递相关文章地址: Android消息传递之H…
一.写在前面 相信各位看官对retrofit和rxjava已经耳熟能详了,最近一直在学习retrofit+rxjava的各种封装姿势,也结合自己的理解,一步一步的做起来. 骚年,如果你还没有掌握retrofit和rx两大框架,那你是真的out了! 如果你对Rxjava不熟悉,请先看扔物线的给 Android 开发者的 RxJava 详解,超详细: 如果你只是想了解retrofit的简单使用,你可以看我另外一篇博客(仅仅是简单使用),android快捷开发之Retrofit网络加载框架的简单使用,…
关于MVP.Retrofit.RxJava,之前已经分别做了分享,如果您还没有阅读过,可以猛戳: 1.Android MVP 实例 2.Android Retrofit 2.0使用 3.RxJava 4.RxBus 假设,您对MVP.Retrofit.RxJava已经有了一点了解,那么我们开始本文: Android MVP优化 1.MVP绑定Activity(Fragment)生命周期 按照之前的文章,每个Presenter都得初始化和销毁,我新加MvpActivity(MvpFragment)…
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57bfef673c1174283d60bac0 Dev Club 是一个交流移动开发技术,结交朋友,扩展人脉的社群,成员都是经过审核的移动开发工程师.每周都会举行嘉宾分享,话题讨论等活动. 本期,我们邀请了腾讯IEG Android 开发工程师——戴俊,为大家分享<基于RxJava的一种MVP实现>. 分享内容简介: RxJava是一个实现Java响应式编程的库,让异步事件以…
上次提到调用observable的publish和connect方法后可以将一个Observable发出的对象实时传递到订阅在上的subscriber. 这个和Rxjava中Subject的概念十分相像.Subject是可以理解为桥接或者代理,可以订阅Observable也可以自己作为Observable提供Subscriber订阅. Rxjava提供PublishSubject其功能与上次提到的publish+connect一样 @Test public void testPublishSub…
create Observable分为cold以及hot两种,cold主要是静态的,每次subscribe都是从头开始互不干扰,而hot的在同一时刻获得的值是一致的 cold Observable 使用create创建的Observable都是属于cold的Observable @Test public void coldObs() throws InterruptedException { Observable obs=Observable.create(sub->{ //在新线程上emit对…
RxJava的核心内容很简单,就是进行异步操作.类似于Handler和AsyncTask的功能,但是在代码结构上不同. RxJava使用了观察者模式和建造者模式中的链式调用(类似于C#的LINQ). 观察者模式:Observable(被观察者)被Observer(观察者)订阅(Subscribe)之后,Observable在发出消息的时候会通知对应的Observer,并且,一个Observable可以有被多个Observer订阅. 链式调用:和Builder模式类似,调用对应的方法对原对象进行处…
以下内容为原创,欢迎转载,转载请注明 来自天天博客: # 在Dagger 2中使用RxJava来进行异步注入 > 原文: 几星期前我写了一篇关于在Dagger 2中使用*Producers*进行异步注入的[文章](https://medium.com/@froger_mcs/dependency-injection-with-dagger-2-producers-c424ddc60ba3).在后台线程中执行对象的初始化又一个很好的优势 - 它负责实时([每秒60帧](https://www.yo…
原文地址:https://www.infoq.com/articles/rxjava-by-example Key takeaways Reactive programming is a specification for dealing with asynchronous streams of data Reactive provides tools for transforming and combining streams and for managing flow-control Mar…
Retrofit结合RxJava使用指南 Retrofit是一个当前很流行的网络请求库, 官网的介绍是: "Type-safe HTTP client for Android and Java". 本文介绍Retrofit的使用. 先介绍单独使用Retrofit进行网络请求, 后面主要介绍和RxJava结合的请求, 有实例代码. Retrofit单独使用 Setup 首先在manifest中加上网络权限: <uses-permission android:name="a…
转载:http://wuxiaolong.me/2016/06/12/mvpRetrofitRxjava/ 关于MVP.Retrofit.RxJava,之前已经分别做了分享,如果您还没有阅读过,可以猛戳:1.Android MVP 实例2.Android Retrofit 2.0使用3.RxJava4.RxBus 假设,您对MVP.Retrofit.RxJava已经有了一点了解,那么我们开始本文: Android MVP优化 1.MVP绑定Activity(Fragment)生命周期按照之前的文…
rxjava等系列产品.思想是很好的,但是被大多数人用成了一坨屎! 就拿rx最经典的那个例子来说: 假设有这样一个需求:界面上有一个自定义的视图 imageCollectorView ,它的作用是显示多张图片,并能使用 addImage(Bitmap) 方法来任意增加显示的图片.现在需要程序将一个给出的目录数组 File[] folders 中每个目录下的 png 图片都加载出来并显示在imageCollectorView 中.需要注意的是,由于读取图片的这一过程较为耗时,需要放在后台执行,而图…
1. RxJava简介 Rx(ReactiveX,响应式编程)是一种事件驱动的基于异步数据流的编程模式,整个数据流就像一条河流,它可以被观测(监听),过滤,操控或者与其他数据流合并为一条新的数据流.而RxJava是.Net Rx在JVM上的实现.RxJava可以应用于大部分基于JVM的语言,如Scala,Groovy等.整个RxJava+RxAndroid的包大小为(1125kb+10kb) 2.RxJava特点 函数响应式编程(Functional Reactive Programming,F…
最近Android6.0的权限问题,要把之前的APP进行改造,用到了RxPermission框架!之前了解过RXJAVA,但是由于之前项目一直没有使用这个框架,所以也就一直搁置了.正好Rxpermission框架里用到了RXJAVA的内容,索性就学习了一下. 在正文开始之前的最后,放上 GitHub 链接和引入依赖的 gradle 代码: Github: https://github.com/ReactiveX/RxJava https://github.com/ReactiveX/RxAndr…
传统的MVP: 1.抽离出View的接口,即ILoginView. 2.抽离Model的接口,即ILoginModel. 3.抽离Presenter的接口,即ILoginPresenter. 4.实现ILoginView 接口的 LoginActivity. 5.实现ILoginModel 接口的 LoginModel. 6.实现ILoginPresenter 接口的 LoginPresenter. LoginActivity:实现ILoginView 接口以及初始化ILoginPresente…
  接着上一篇文章的内容,这篇文章一边分析RxLifecycle的实现原理,一边学习RxJava操作符. 首先RxLifecycle在基础类里定义BehaviorSubject并绑定Activity或Fragment的生命周期,生命周期被调用时BehaviorSubject就发射相应周期的数据. 并且BehaviorSubject同时作为一个被观察者,随时被自定义的操作符观察着. private final BehaviorSubject<ActivityEvent> lifecycleSub…
  最近在研究RxJava自定义操作符的实现原理,发现成型的项目案例较少.突然想起在项目中应用的RxLifecycle是使用自定义操作符,便拿来研究了一下.分析之前,跟大家了解一些相关操作符和RxLifecycle工具包的作用. RxLifecycle   用来严格控制由于发布了一个订阅后,没有及时取消,导致Activity/Fragment无法销毁导致的内存泄露.使用方式参考官方github说明,这里不做重点说明. RxJava操作符   这里是稍微重点介绍一下几个操作符,方便对RxLifec…
关于RxJava语法的问题与理解   最近看到一个blog-RxJava 写到关于Observable数据异步加载的介绍.针对fromCallable和just操作符在使用上的问题来跟大家针对代码进行分析一下: 代码思想 /** * 数据获取 **/ String getMessage() { Log.d("RxJava", Thread.currentThread().getName()); return "getMessage"; } /** * 订阅 **/…
介绍一下业务逻辑:获取接口数据,根据接口内容判断是否需要继续获取数据. 本文使用递归思路,通过RxJava来实现此功能,获取数据的Observable直接用模拟的Observable.just()替代.关键点使用concatMap和concatWith操作符 代码块 public Observable<Integer> getInt(int i) { return Observable.just(i).concatMap(integer -> { if (integer == 10) {…
简单介绍一下业务逻辑:获取字符串,如果获取失败进行10次重试,超出10次未成功视为失败. 模拟获取字符串场景 代码块 class MsgTool { int count; String getMsg() throws Exception { count++; LogUtils.d("execute getMsg count : " + count); if (count == 15) { return "getMsg"; } else { throw new Exc…
简单介绍一下背景,最近RxJava很火,我也看来学习一下,计划在项目的独立模块中使用它.使用过程中遇到很多问题,在这里记录分享一下.可能有使用不当的地方,大家多多包涵.对于RxJava的基本概念和功能原理就不做介绍了. 变换操作时,使用的方法是抛出异常的,如何处理: 开始使用map操作,发现处理异常时,不能在订阅(Subscriber)的时候观察到onError. 代码块 public String changeFun(int i) throws Exception { if (i == 100…
RxJava是一个采用观察者模式的异步框架,本文给出几个基本的使用例子. 1.配置依赖: compile 'io.reactivex:rxjava:1.0.14' compile 'io.reactivex:rxandroid:1.0.1' 2.基础(发布.订阅): observable = Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? su…
异常处理 在Rxjava订阅的Observable有时会抛出异常,在RxJava中有两大类策略,一个是准备备用的Observable,在发生异常时将subscriber订阅到新的Observable上,第二种是重试. catch 第一种策略是捕获异常并使用新的Observable来替换出现异常的Observable 方法有 onErrorReturn:返回单个对象 onErrorResumeNext:当抛出Throwable时返回一个新的Observable onExceptionResumeN…
简介 RxJava是一个开源的Rx框架ReactiveX的java版本. ReactiveX的主要目的是通过一系列Observable组合异步或事件代码.其中使用的是观察者模式. 可以吧Reactive想象成不断向订阅者推送对象的机制,这个推送过程可以是同步的也可以是异步的. helloworld 下面看一个简单的例子 首先引入rxjava的依赖 //gradle compile group: 'io.reactivex', name: 'rxjava', version: '1.2.1' @T…
前言: 通过上面的学习,我们不难发现单纯使用okHttp来作为网络库还是多多少少有那么一点点不太方便,而且还需自己来管理接口,对于接口的使用的是哪种请求方式也不能一目了然,出于这个目的接下来学习一下Retrofit+Okhttp的搭配使用. okHttp相关文章地址: Android okHttp网络请求之Get/Post请求 Android okHttp网络请求之文件上传下载 Android okHttp网络请求之Json解析 Android okHttp网络请求之缓存控制Cache-Cont…
引用 "retrofit" : "com.squareup.retrofit2:retrofit:2.0.1", "retrofit-adapter" : "com.squareup.retrofit2:adapter-rxjava:2.0.1", "retrofit-converter" : "com.squareup.retrofit2:converter-gson:2.0.1",…
深入浅出RxJava(一:基础篇) 深入浅出RxJava(二:操作符) 深入浅出RxJava三--响应式的好处 深入浅出RxJava四-在Android中使用响应式编程 RxJava 到底是什么? 一个词:异步. RxJava 好在哪? 换句话说,『同样是做异步,为什么人们用它,而不用现成的 AsyncTask / Handler / XXX / ... ?』 一个词:简洁. RxJava 的优势也是简洁,但它的简洁的与众不同之处在于,随着程序逻辑变得越来越复杂,它依然能够保持简洁. (一)基本…
1,昨天我们基本上把MVP给封装起来了,今天接着昨天的东西来结合RxJava把Retrofit把网络框架简单的封装一下,先看一下我们今天实现的效果: 哈哈 ,还是昨天的效果,好吧 ,我认错. 2,由于这次是把RxJava给接入进来了,所以我们可以对昨天的BasePresenter再次进行封装 BaseRxPresenter.java package com.qianmo.myview2.base; import rx.Subscription; import rx.subscriptions.C…