RxAndroid

RxJava安装及简单示例

放肆的年华 提交于 2020-11-24 16:01:39
一、在Android Studio中添加RxJava2 1、在build.Gradle添加: compile ‘io.reactivex.rxjava2:rxandroid:2.0.1’ compile ‘io.reactivex.rxjava2:rxjava:2.1.2’ 2、点synet, 3、添加完成。 二、简单使用RxJava2 1、设定一个场景。 有一个快餐店(kuaicandian)。 我(wo)订了(subscribe)一份快餐,并留下了地址。 等待送餐到家。 2、写代码。 //创建一个快餐店。Observable(被观察者) Observable<String> kuaicandian=Observable.create( new ObservableOnSubscribe<String>() { @Override public void subscribe (ObservableEmitter<String> e) throws Exception { Thread.sleep( 6000 ); e.onNext( "快餐(牛肉面)" ); //发送数据 e.onComplete(); //关闭发送数据,以后不能再使用e.onNext } }); //创建一个我(wo)。Observer(观察者) Observer<String> wo= new

【57】kotlin RxKotlin 与 RxAndroid的使用

Deadly 提交于 2020-08-04 19:00:56
RxKotlin 官网地址: https://github.com/ReactiveX/RxKotlin 特点。轻量级 基于RxJava 观察者模式 RxAndroid 官网地址: https://github.com/ReactiveX/RxAndroid 基于Rxjava得扩展卡。可以优雅地处理异步请求 更好得兼容Android特性,如主线程,ui事件 用于RxJava的Kotlin扩展 RxKotlin是一个轻量级的库,它为 RxJava 添加了方便的扩展功能。您可以直接使用RxJava和Kotlin,但是Kotlin具有语言功能(例如 扩展功能 ),可以进一步简化RxJava的使用。RxKotlin旨在保守地在一个集中式库中收集这些便利,并标准化将RxJava与Kotlin一起使用的约定。 官方使用 import io.reactivex.rxjava3.kotlin.subscribeBy import io.reactivex.rxjava3.kotlin.toObservable fun main(args: Array<String>) { val list = listOf("Alpha", "Beta", "Gamma", "Delta", "Epsilon") list.toObservable() // extension function for

关于Observable interval定时任务停止问题

风流意气都作罢 提交于 2020-04-10 21:55:29
本文不分析操作符的使用方法,主要分析interval轮询中如何来停止。 最近在项目中使用RxJava,RxAndroid;主要运用于网络请求,但是项目中有用到定时任务,每隔20s去更新数据,因此想到RxJava中有定时器操作符,再加上已经引入RxJava,链式请求就完成了,详见代码: Observable.interval(0, 20, TimeUnit.SECONDS) .doOnSubscribe { mDisposable = it } .flatMap { return@flatMap DataUtils.API_SERVICE.getQrCode(userId) } .map { val body = it.string() val str = body.substring(body.indexOf(",") + 1) val decodedString = Base64.decode(str, Base64.DEFAULT) return@map BitmapFactory.decodeByteArray(decodedString, 0, decodedString.size) } .compose(ThreadFromUtils.defaultSchedulers()) .subscribe({ dismissProgressDialog() qr_code

Retrofit2.0结合RxAndroid实现二次封装

你说的曾经没有我的故事 提交于 2020-04-06 19:47:13
实Retrofit2.0结合RxAndroid现网络请求网上有很多文章,这里不再详细介绍 Retrofit基本是一个业务请求,对应一个接口方法,因为其返回值不支持泛型,只能是具体的类。好处是结构清楚,缺点是业务请求就耦合的网络接口,如果以后想分离网络就很麻烦。而且开发人员还要同时定义每个业务的请求接口,和具体的请求方式,对于大型APP,工作量很大,而且容易出错。 本文主要介绍如何对Retrofit2.0+RxAndroid封装成网络层,对业务使用隔离,使用者不需要知道网络框架使用的是哪种技术,只需要使用通用的接口,即可实现不同业务请求的调用。 下面这种泛型返回类型,Retrofit在运行是会报错,啃爹啊。 @GET(ACTION_URL) <T extends BaseResult> Observable<T> requestNetwokData(@Query("a") String type, @QueryMap Map<String, String> options); 下面是变相的实现方式,基本技术不变,只是在服务器返回数据时做了一个简单的处理。 1. 返回的数据使用OKHttp原始的类型ResponseBody 2. 数据返回后,通过RxAndroid的map方法,强制根据调用者要求的类型进行转换 @GET(ACTION_URL) Observable

浅谈 RxAndroid + Retrofit + Databinding

那年仲夏 提交于 2019-12-05 15:45:37
最近 RxAndroid 、MVP、MVVM 一直是 Android 程序猿茶余饭后的谈资,于是我也抱着凑热闹的态度试试了试水。这里就谈谈试水后的感受 什么是 RxAndroid ? 要说什么是 RxAndroid ,得从 RxJava 说起。RxJava 在 GitHub 主页上的自我介绍是 “a library for composing asynchronous and event-based programs using observable sequences for the Java VM”(一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库)。这就是 RxJava ,概括得非常精准。 RxJava 的本质可以压缩为异步这一个词。说到根上,它就是一个实现异步操作的库,而别的定语都是基于这之上的。 而RxAndroid是RxJava的一个针对Android平台的扩展,主要用于 Android 开发。 什么是 Retrofit ? Retrofit 是一套 RESTful 架构的 Android(Java) 客户端实现,基于注解,提供 JSON to POJO(Plain Ordinary Java Object ,简单 Java 对象),POJO to JSON,网络请求(POST,GET, PUT,DELETE 等)封装。

RxAndroid and Retrofit: Unable to create call adapter for io.reactivex.Observable&lt;retrofit2.Response&lt;okhttp3.ResponseBody&gt;&gt;

匿名 (未验证) 提交于 2019-12-03 02:15:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I am trying use rxJava, rxAndroid, Retrofit2, and OkHTTP3 to download a file from a URL endpoint. My code is unable to create the call adapter for an "Observable< retrofit2.Response< okhttp3.ResponseBody>>". These methods are new to me so I believe I'm missing an important concept here. Any direction or points is greatly appreciated. FATAL EXCEPTION: main Process: com.example.khe11e.rxdownloadfile, PID: 14130 java.lang.IllegalArgumentException: Unable to create call adapter for io.reactivex.Observable> for method RetrofitInterface

DexArchiveMergerException with Android Studio 3.0

匿名 (未验证) 提交于 2019-12-03 00:50:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: Having compilation error with the following build.gradle details : Top-Level build.gradle buildscript { repositories { google() jcenter() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:3.0.0' } } allprojects { repositories { google() jcenter() mavenCentral() maven { url 'https://maven.google.com' } } } task clean(type: Delete) { delete rootProject.buildDir } App-Level build.gradle apply plugin: 'com.android.application' android { compileSdkVersion 27 defaultConfig { applicationId "com.abc" minSdkVersion 15

Unable to merge dex

匿名 (未验证) 提交于 2019-12-03 00:22:01
Unable to merge dex 原因:导入library时,出现包重复。 修改后运行报以下错误,可以看出是Rx包引入错误 Ctrl+N 搜索AndroidSchedulers,查看到多个包引用 我的项目由于引入一个第三方库出现的错误,而这个第三方库中引用了 com.github.ReactiveX:RxAndroid-2.0.2 ,所以需要在这个第三方库中去除这个对rxAndroid的引用。 implementation( 'com.github.jhj24:TreeData:v.0.8.0' ) { exclude group : 'com.github.ReactiveX' } 待解决:当不知道Rxandroid在哪个第三方库中怎么解决??? 文章来源: Unable to merge dex

2015年Android开发新技术

戏子无情 提交于 2019-12-02 09:01:12
开发工具 Android Studio : Google 官方放弃 Eclipse 和Android Studio 普及。AS 虽然不算新,但是对 Android Studio 这个软件的更新速度快的惊人,有大量的新功能发布。例如支持很多注解代码提示注解、Live code template、支持自动生成 Parcelable 实现等等,作为开发者,持续关注这个更新列表 Recent Changes,一定会让你的写代码的生活更加美好。 编程语言 Kotlin: 作为 Android 领域的 Swift,绝对让你如沐新风。抛弃沉重的 Java 语法,Kotlin 融入了很多现代编程语言的思想,作为开发者,接受新的语言,了解新语言的发展趋势,更有利于开阔你的思路和加深对语言的理解。在 Android 开发上,使用 Kotlin 并不会让你付出什么代价,为什么不来试试? 使用Kotlin进行 Android开发 。 React Native: 跨平台一直是程序员的梦想,而且移动应用的跨平台解决方案也很多,因为 Facebook 的参与和力推,让这个解决方案带上了光环。第一个用 React Native 开发的 App 已经在 Google Play 上架 Facebook 广告管理工具,听说 Android 的 SDK 也马上会到来,React Native。 Sky: 与 React

[转帖]浅谈响应式编程(Reactive Programming)

点点圈 提交于 2019-12-02 04:29:59
浅谈响应式编程(Reactive Programming) https://www.jianshu.com/p/1765f658200a 例子写的非常好呢. 0.9312018.02.14 21:22:16字数 1877阅读 9816 这是告别CSDN后第一次使用简书写IT类的博客,还在适应。最不适应的就是不能直接手输markdown语法标记。(好像原因是我没有切换编辑器) 什么是响应式编程(Reactive Programming) In computing, reactive programming is an asynchronous programming paradigm concerned with data streams and the propagation of change. This means that it becomes possible to express static (e.g. arrays) or dynamic (e.g. event emitters) data streams with ease via the employed programming language(s), and that an inferred dependency within the associated execution model exists,