RxJava

学习响应式编程 Reactor (1)

落爺英雄遲暮 提交于 2020-08-06 03:12:38
响应式编程 命令式编程(Imperative Programing),是一种描述计算机所需做出的行为的编程范式。详细的命令机器怎么(How)去处理以达到想要的结果(What)。 声明式编程(Declarative Programing),是一种编程范式,与命令式编程相对立。它描述目标的性质,让计算机明白目标,而非流程。只告诉机器想要的结果(What),机器自己摸索过程(How)。 响应式编程(Reactive Programing)是一种关注数据流(data streams)和变化传递(propagation of charge)的异步编程方式,它属于声明式编程范式。 上面的文字理论性比较强,说的直白一点: 数据流就像一条河:它可以被观测,被过滤,被操作(和 Java Stream 一致),或者为新的消费者与另外一条流合并为一条新的流。 响应式编程的一个关键概念是事件。事件可以被等待,可以触发过程,也可以除法其它事件。事件是唯一以合适的方式将我们的现实世界映射到我们的软件中:如果屋里太热了,我们就打开一扇窗。 同样的,当我们的天气 app 从服务器端获取到新的天气数据后,我们需要更新 app 上展示天气的 UI ;汽车上的车道偏移系统探测到车辆偏移了正常路线就会提醒驾驶者纠正;这些就是响应事件。 响应式编程可以理解为面向对象中观察者模式(Observer Design

【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

如何从JDK8 Stream转换为反应式框架流?

被刻印的时光 ゝ 提交于 2020-07-29 06:41:36
一、前言 最近在做一个项目,获取JDK8 Stream对象后,想要批量消费,不想自己写个集合来做批量处理。而反应式编程实现比如rxjava或者reactor是有丰富的流操作符,所以调研了下如何把JDK8 Stream转换为反应式流。 二、批量消费 有时候场景需要我们批量消费以便提高执行效率,比如对应同一个表的插入操作,批量插入的效率比单条逐个插入效率要好很多。那么对应给定的一个数据源,如何聚合数据为批量那?当数据源是一个内存list时候,最简单方法如下: public static void main(String[] ar) { //1.创建list List<Integer> personList = new ArrayList<Integer>(); for (int i = 0; i < 100; ++i) { personList.add(i); } //2.切分处理 List<List<Integer>> list = Lists.partition(personList, 20); list.stream().forEach(tempList->System.out.println(JSON.toJSONString(tempList))); } 如上代码1创建了一个list列表,代码2,使用Google guava包里面的Lists

rxjava、retrofit 简单&完善封装

笑着哭i 提交于 2020-05-08 09:50:06
该封装中除了原有的功能,额外包含什么功能先说一下,另外先展示基本使用方式。看是不是你想要的 1、公共参数的添加 2、token的自动刷新 3、错误请求的自动处理 4、单例模式以及工程模式的retrofit,以适应出现不同域名请求的情况 使用方式如下 1、接口方法定义 /** * 示例 * 上传名字 * <BaseResponse<Object>> BaseResponse为封装的公共请求结果实体,Object可以改成对应自己想要的实体 */ @POST("*********") Observable<BaseResponse<Object>> uploadName(@Query("name") String name); 2、调用方法 RxHelper.deploy(RetrofitUtil.getRetrofit().uploadName("小明"), new NetCallback<StudentInfo>() { @Override public void onCompleted(StudentInfo studentInfo) { //StudentInfo studentInfo 这个要和 方法定义中的BaseResponse的泛型<studentInfo>保持一致 } }); 以上就是使用的方法,写这个的初衷是因为我懒,抱着磨刀不误砍柴工的想法,所以封装的尽可能简单

安卓开发常用网络请求框架OkHttp、Volley、XUtils、Retrofit对比

杀马特。学长 韩版系。学妹 提交于 2020-05-05 18:02:37
网络请求框架总结 1.xutils 此框架庞大而周全,这个框架可以网络请求,同时可以图片加载,又可以数据存储,又可以 View 注解,使用这种框架很方便,这样会使得你整个项目对它依赖性太强,万一以后这个库不维护了,或者中间某个模块出问题了,这个影响非常大,所以在项目开发时,一般会更喜欢选择专注某一领域的框架。 2.OkHttp Android 开发中是可以直接使用现成的api进行网络请求的,就是使用HttpClient、HttpUrlConnection 进行操作,目前HttpClient 已经被废弃,而 android-async-http 是基于HttpClient的,可能也是因为这个原因作者放弃维护。 而OkHttp是Square公司开源的针对Java和Android程序,封装的一个高性能http请求库,它的职责跟HttpUrlConnection 是一样的,支持 spdy、http 2.0、websocket ,支持同步、异步,而且 OkHttp 又封装了线程池,封装了数据转换,封装了参数使用、错误处理等,api使用起来更加方便。可以把它理解成是一个封装之后的类似HttpUrlConnection的东西,但是在使用的时候仍然需要自己再做一层封装,这样才能像使用一个框架一样更加顺手。 3.Volley Volley是Google官方出的一套小而巧的异步请求库

Android开发 retrofit入门讲解

我怕爱的太早我们不能终老 提交于 2020-05-05 18:02:18
前言    retrofit基于okhttp封装的网络请求框架,网络请求的工作本质上是 OkHttp 完成,而 retrofit 仅负责网络请求接口的封装.如果你不了解OKhttp建议你还是先了解它在来学习使用retrofit,传送门: Android 开发 框架系列 OkHttp使用详解   Retrofit优势,就是简洁易用,解耦,扩展性强,可搭配多种Json解析框架(例如Gson),另外还支持RxJava. 但是,这篇博客不讲解RxJava配合使用的部分,与RxJava的配合使用将在另外一篇博客中讲解.   另外 retrofit 已经是封装的非常好了,已经最大程度上的匹配各种使用情况,所以不建议多此一举的再次 封装 retrofit(最多封装 retrofit 的单例) . 再次封装不会看起来很帅也不会让你很牛逼. 只会让你看起来更蠢.把已经很拓展很解耦的实现全部破坏. Github地址    https://github.com/square/retrofit 依赖    如果你不需要使用RxJava模式,那么你只需要依赖下面2个: implementation ' com.squareup.retrofit2:retrofit:2.6.2 ' implementation ' com.squareup.retrofit2:converter-gson:2.4.0 '  

Android 网络请求Retrofit + RxJava

。_饼干妹妹 提交于 2020-05-05 18:01:59
一、背景 经常看到项目用Retrofit+RxJava+RxAndroid的框架,为了看懂项目的结构。现在来了解一下,Retrofit: Retrofit是Square 公司开发的一款正对Android 网络请求的框架。底层基于OkHttp 实现,OkHttp 已经得到了google 官方的认可OkHttp: 也是Square 开源的网络请求库 RxJava:RxJava 在 GitHub 主页上的自我介绍是 “a library for composing asynchronous and event-based programs using observable sequences for the Java VM”(一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库)。这就是 RxJava ,概括得非常精准。总之就是让异步操作变得非常简单。 各自的职责:Retrofit 负责请求的数据和请求的结果,使用接口的方式呈现,OkHttp 负责请求的过程,RxJava 负责异步,各种线程之间的切换RxJava + Retrofit + okHttp 已成为当前Android 网络请求最流行的方式。 二、Retrofit 写一个网络请求 1,首先,要使用Retrofit ,你肯定需要把它的包引入,在你的build.gradle文件中添加如下配置: compile

Android网络框架之Retrofit + RxJava + OkHttp 变化的时代

依然范特西╮ 提交于 2020-05-05 17:36:31
1、什么是Retrofit框架? 它是Square公司开发的现在非常流行的网络框架,所以我们在导入它的包的时候都可以看到这个公司的名字,目前的版本是2。 特点: 性能好,处理快,使用简单,Retrofit 是安卓上最流行的HTTP Client库之一 使用REST API设计风格 支持 NIO(new i/o) 默认使用OKHttp处理网络请求,我觉得可以看成是OKHttp的增强。 随着Google对HttpClient的摒弃,和Volley的逐渐没落,OkHttp开始异军突起,而Retrofit则对okHttp进行了强制依赖。Retrofit也是Square公司开发的一款针对Android网络请求的框架,其实质就是对okHttp的封装,使用面向接口的方式进行网络请求,利用动态生成的代理类封装了网络接口。retrofit非常适合于RESTful url格式的请求,更多使用注解的方式提供功能。 现在android网络请求大部分已经换成了Retrofit2.0 +RxJava + okHttp3.0,Retrofit 使用接口的方式,负责请求的数据和请求的结果,OkHttp 负责请求的过程,RxJava 负责异步,各种线程之间的切换。毫无疑问这三剑客 已成为当前Android 网络请求最流行的方式。 简介 Retrofit: Retrofit是Square

写个hello world了解Rxjava

本小妞迷上赌 提交于 2020-05-01 02:41:24
[toc] spring boot 项目中使用Rxjava2 #什么是Rxjava? 来自百度百科的解释 RxJava - JVM响应式扩展Reactive Extensions 用于使用Java VM的可观察序列编写异步和基于事件的程序的库。 ReactiveX是一个通过使用可观察序列来编写异步和基于事件的程序的库。 它扩展了观察者模式以支持数据和/或事件序列,并增加了运算符,使您可以声明性地组合序列,同时抽象出对低级线程,同步,线程安全性,并发数据结构和非线程等事物的关注阻塞I / O。 ##在微服务中的优点 隔离每个服务,即使单个服务的响应失败了,也不会影响整个请求的响应。 #上手使用 ##引入依赖 Rxjava 的版本: https://mvnrepository.com/artifact/io.reactivex.rxjava2/rxjava 本次采用最新的2.2.2版本 <dependency> <groupId>io.reactivex.rxjava2</groupId> <artifactId>rxjava</artifactId> <version>2.2.2</version> </dependency> 在spring boot中引入依赖后就可以使用Rxjava了,下面通过写一组hello world来看看Rxjava的基本原理。 import io

一款聚合电影、电视剧、综艺节目、动漫、游戏影音软件开源啦!

会有一股神秘感。 提交于 2020-04-30 11:34:01
今天主要分享lxw开源他的聚合软件:影视天地(Android 客户端),涵盖电影、电视剧、综艺节目、动漫、游戏五大类别的资源。整合两大资源搜索引擎,连接互联网千万数量级的资源库。支持视频资源在线播放、边下边播,不限速下载,不等待播放。 项目特色:本项目实现了资源列表、详情、搜索,切换资源库、搜索引擎,跳转第三方软件下载、热修复、推送分享等核心功能,应用 Retrofit2+RxJava2+Glide 等主流框架。二次封装网络请求框架,实现异常和错误的统一处理,集成微信分享、极光推送、阿里第二代热修复框架 HotFix2。 效果图如下: 启动页 首页 情页 搜索页 切换主题 部分代码: 常量类: public class Constant { public static ConfigModel configModel; /** * 网络请求 */ public static String SOURCE_TYPE; public static final String KEY_SOURCE_TYPE = "SOURCE_TYPE" ; public static final String SOURCE_TYPE_1 = "1" ;// 飘花电影 public static final String SOURCE_TYPE_2 = "2" ;// 猫扑电影 public static