RxAndroid介绍(一)

RxJava 与 RxAndroid 入门篇 响应式编程 是一种基于异步数据流概念的编程模式; 事件; RxJava 异步数据处理库 扩展的观察者模式 onCompleted,onError 轻量级框架 支持Java 8 lambda 支持Java 6+ & Android 2.3+ 支持异步和同步 提高工作效率 优雅的解决复杂业务场景 RxAndroid RxJava针对Android平台的扩展,用于Android开发 提供响应式扩展组件,快速、易于开发Android程序 Schedulers:调度器 解决Android主线程问题 阅读详情
http://gank.io/post/560e15be2dca930e00da1083?from=timeline&isappinstalled=0#toc_1
概念:RxAndroid是Rxjava的分支,专门用于Android的开发(实际也就比Rxjava多了几个类,比如Android端的调度器,LOOP等多了些主线程的操作),RX是一种编程理念,叫响应式编程,在不同编程语言有不同的实现

响应式编程(函数式编程):方法的参数还是一个方法(不用再写匿名内部类,创建对象等等操作)
observebles( 响应式 ):就是根据某种状况,做对应的操作,比如有人在你面前跌倒,你条件反射的去拿手机录像...

我们做Android开发直接用RxAndroid即可,不过搭建环境时,Rxjava也要关联

官方源码地址:https://github.com/ReactiveX/RxJava            https://github.com/ReactiveX/RxAndroid 

RxAndroid详细介绍:http://mp.weixin.qq.com/s?__biz=MzI3MDE0NzYwNA==&mid=2651435447&idx=1&sn=19f8f457dca675ffa987cf9bd45d6642&chksm=f12898ccc65f11dadb5e5fc36ecae5b9f93e263f3a7d92b7b27a5b1e7370d91c434781ee6334&mpshare=1&scene=23&srcid=05138uA1VNrYw45WiMOY8U6h#rd

 MVP,Retrofit,RxJava : http://mp.weixin.qq.com/s?__biz=MzA3MjgwNDIzNQ==&mid=2651940987&idx=1&sn=2681d74fba727f24046eead37f519c6a&chksm=84fd7a9fb38af389e4da28b7ebda355d74e027c2db762e09ff936a8b8a8c217e6aa7adddcf5d&mpshare=1&scene=23&srcid=0512m5iEKHSDMEUONabbPGva#rd

github官方介绍:
> a library for composing asynchronous and event-based programs by using observable sequences.  
> 一个在运行在Java VM上的库, 通过_可观测的序列_来组成一个异步的、基于事件的程序。

特色: 观察者模式,lambada表达式,使用stream特性 操作集合,进行异步操作( 完全替代AsyncTask ),用到了很多Java1.8的新特性

* 解决问题:
> 让复杂的程序逻辑回归简单、清晰,不用在考虑什么同步,异步的事情

* Observable(被观察者) 和Subscriber(订阅者) 可以做任何事情
- Observable可以是一个网络请求,Subscriber来显示请求结果;
- Observable可以是一个数据库查询,Subscriber来显示查询结果;
- Observable可以是按钮点击事件,Subscriber来响应点击事件;
- Observable可以是大图片文件的加载解析, Subscriber来展示解析后的图片。

* RxJava 的四个基本概念:观察者设计模式
- Observable (可观察者/被观察者)
- Observer (观察者/订阅者)
- subscribe (订阅)
- Event (事件)

## RxJava的核心类 
* Observable 可观察者/被观察者

* Observer/Subscriber 观察者/订阅者
一般我们用 Subscriber更多,他不仅有observer有的方法,也包含了Observer方法没有的方法

* 操作符(Operators)(常用的)
- map 转换对象
- flatMap 平铺对象
- filter 过滤
- distinct() 去重复(独特的)
- take(int i) 从开始取出固定个数
- doOnNext 输出元素之前的额外操作(不常用)
- toList() 打包对象为集合
* 调度器(Scheduler), 用于线程控制 
- Schedulers.immediate() 默认线程
- Schedulers.newThread() 每次都创建新的线程执行
- Schedulers.io() 包含线程池的机制, 线程个数无限, 可以复用空闲线程(常用)
- Schedulers.computation() CPU密集计算线程, 线程池线程数和CPU数一致.处理图形运算
- AndroidSchedulers.mainThread() Android更新界面的UI主线程 (常用)

* subscribeOn 可执行多次, 切换操作符的线程
* observeOn 只需要执行一次, 指定订阅者执行的线程

### 添加java8的lambda支持

* build.gradle引入依赖
compile 'io.reactivex:rxandroid:1.2.1'
compile 'io.reactivex:rxjava:1.1.6'

### RxJava 使用流程
1. 创建 Observable 被观察者
2. 初始化被观察(订阅)后的事件序列
2. 创建 Observer/Subscriber 观察者/订阅者
3. 订阅 Subscribe

## RxJava在Android中的典型使用场景
* Scheduler线程切换
* 定时任务 timer
* 周期任务 interval
* 合并多个请求 merge
* 防止连续点击 throttleFirst
* 解决回调嵌套Callback hell, flatMap
 
Android进阶之路 - RxAndroid实战入门 在此之前,我们可能经常会听到RxJava与RxAndroid这种开发中使用的一种编程方式,同时我们或许也会听到,响应式编程,观察者模式,订阅者模式之类的话语至少我一开始认为这种模式是建立在三者之间的,Observer(观察者),Obserable(被观察者),Subcriber(订阅者),但是目前这个我仿造网上写的Demo只是利用了Obserable(被观察者),Subcriber(订阅者)来实现的 阅读详情

相关推荐

Android实战进阶 - 封装一个属于自己的 RxJava、RxAndroid + Retrofit 网络框架

21年初时,在无聊之际自己又手动封装了一次Rx + Retrofit 作为项目的网络框架,中间从Retrofit的入门使用 -> 单独封装Retrofit -> Rx + Retrofit 都又走了一次,回头一看时隔快一年了才开始记录...

Android、前端、小程序、后端 3834

【Android】RXAndroid

RXAndroid 起源于RXJava,体现了响应式的编程规范,可以方便地处理异步数据流,强调对数据的观察与处理的流程 一、使用 导入依赖 implementation 'io.reactivex.rxjava3:rxandroid:3.0.0' implementation 'io.reactivex.rxjava3:rxjava:3.0.0' GitHub地址:RxAndroid 核心API Observable被观察者,事件由被观察者发出 Observer 观察者,事件由观察者接收 Subs.

健忘的鱼的博客 5843

深入理解DQN中的Q值:核心概念和应用

在强化学习中,Q值(或称为动作价值函数)是核心概念之一。Q值函数 ( Q(s, a) ) 表示在给定状态 ( s ) 下,采取动作 ( a ) 并遵循某策略后,智能体从当前状态到未来状态所能获得的预期总回报。简言之,Q值是评估特定状态和动作对的好坏的指标。

qlkaicx的博客 2975

ReactiveX简介

一、ReactiveX简介 在学习RxJava前首先需要了解ReactiveX,因为RxJava是ReactiveX的一种Java的实现形式。 ReactiveX的官网地址为: http://reactivex.io/ ReactiveX官网对于自身的介绍是: An API for asynchronous programming with observable streams ...

qq_42216184的博客 1万+

inferCNVpy分析流程学习

inferCNV的用途大家都已经很清楚了,接下来就走一下流程,试一试Python版的inferCNV。使用的数据集为:GSE188711,既往推文可见:Scanpy分析全流程(含harmonypy整合/细胞周期矫正/双细胞检测及去除)(

zfyyzhys的博客 1295

【仿真】Carla Python API实战:从零搭建自动驾驶测试环境

本文详细介绍了如何使用Carla Python API从零搭建自动驾驶测试环境。通过Carla仿真平台,开发者可以构建高度逼真的城市环境和车辆物理模型,利用Python API实现传感器配置、数据采集、场景构建及自动驾驶算法集成。文章还分享了实际项目中的调试技巧和性能优化经验,帮助读者快速掌握自动驾驶仿真测试的核心技术。

weixin_29050513的博客 213

RXAndroid入门

使用如下android需要在build.gradle中加入compile 'io.reactivex:rxandroid:1.2.1' 一、在UI现场观察 //需要导入compile 'io.reactivex:rxandroid:1.2.1' Observable averageObservable = MathObservable.sumI

nicolelili1的专栏 689

告别SquareLine!用免费的NXP GUI-Guider为海思3516AV300开发LVGL界面(附完整移植流程)

本文详细介绍了如何利用免费的NXP GUI-Guider工具为海思Hi3516AV300开发LVGL界面,包括环境配置、代码移植和性能优化等全流程实战指南。特别针对二维码组件缺失等常见问题提供解决方案,帮助开发者零成本构建高效嵌入式GUI系统。

weixin_28292761的博客 416

【Android】RxJava

1,概述 响应式编程,与java.Stream或kotlin流式编程异曲同工,不过提供了更强大功能,如线程切换。 android项目导入依赖: // https://mvnrepository.com/artifact/io.reactivex/rxandroid implementation group: 'io.reactivex', name: 'rxandroid', version: '1.2.1' 2,实例 public class RxJavaActivity extends A

qq_40900926的博客 1011

分布式存储系统关于GDPR条例中的数据清除原则

文章目录前言HDFS存储系统数据的完全删除基于加解密的输入输出流的数据保护方案 前言 关于GDPR是什么,可能许多同学之前并不太了解,至少笔者在之前也是不清楚的。GDPR全称为通用数据保护条例,General Data Protection Regulation。它是一项来自欧盟的关于计算机数据保护相关的条约,旨在规范系统如何收集,管控用户私人数据的种种行为。但是当前的一些存储系统并没有完全符合...

走在前往架构师的路上 3627

SAP 对接CBS(http方式)

CLEAR:lv_xml_crc32_string. CONCATENATEcrc32_passwordcrc32_keyi_stringINTOlv_xml_crc32_string. CONDENSElv_xml_crc32_string. CALLFUNCTION'SCMS_STRING_TO_XSTRING' EXPORTING text=lv_xml_crc32_string encoding='8400' "GB...

3598

RxAndroid: 基础介绍(一)

前言在找工作的时候看到过有面试要求会RxJava + Retrofit,当时也没有太在意,正好新的工作中用的就是这个,也慢慢体会了一下,的确是不错,他的优点就是逻辑清晰,对象的加工和线程的切换都是傻瓜操作,不得不说他火的有道理。正文概念性的东西就不说了,RxAndroid是RxJava在Android平台的一个版本,实现的功能几乎都是一样的。我在使用的都是都是2.0版本,跟低版本使用方法是有区别的,

珠穆朗玛小王子的博客 3006

r3live 使用前提 雷达-相机外参标定 livox_camera_lidar_calibration

港科大livox_camera_calib虽然操作方便,但是使用mid360雷达会有视角问题(投影三维点到相机),尝试了很多场景,标定效果都不理想(推荐场景是楼梯间),看来港大的更适合avia之类窄角度的雷达。如果标定效果不好的话,就使用 getExt2节点,getExt1节点只优化外参,而getExt2节点在计算的时候会将一开始计算的内参作为初值和外参一起优化。一般使用getExt1节点即可,如果在外参初值验证过,并且异常值已经剔除后,优化还是有较大的残差,那么可以使用getExt2试一试。

z1872385的博客 2399

集成RxJava/RxAndroid框架

为什么要集成rxandroid? 因为Java语言不是响应式编程,或者函数式编程语言(可以简单理解为,和响应式差不多),所以要实现响应式编程,就需要集成一些框架;但也可以自己写。 添加依赖 这里使用rxandroid框架。 //使用了Android响应式编程 //RxJava和RxAndroid区别? //简单来说:就是RxAndroid在RxJava的基础上 //优化了一些功能 //增强了Android特有的功能 //https://github.com/ReactiveX/RxAndroid impl

追梦人的博客 367

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

RXJava找不到AndroidSchedulers

原因: 还需要依赖一个 RxAndroid,RxAndroid里有AndroidSchedulers,RxJava里是没有的(类似于Java的SDK不会包含  AndroidSDK里的TextView)解决办法: 1.可以增加RxAndroid依赖 2.自己写一个AndroidSchedulers,以下代码:public class AndroidScheduler implements Exec

zhjali123的专栏 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

58tongchengapk

android\support\annotation android\support\design android\support\multidex android\util \com\baidu com\facebook com\networkbench 听云 com\nineoldandroids\animation com\pushtorefresh\storio com\

xiayu98020214的专栏 701

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Android RxPermissions 动态权限申请

RxPermissions 动态权限申请 https://github.com/tbruyelle/RxPermissions Project allprojects { repositories { google() jcenter() maven { url 'https://jitpack.io' } } } Module ...

张雨的博客 698

RxAndroid介绍

RxAndroid RxAndroid是RxJava的一个针对Android平台的扩展。它包含了一些能够简化Android开发的工具。 首先,AndroidSchedulers提供了针对Android的线程系统的调度器。需要在UI线程中运行某些代码?很简单,只需要使用AndroidSchedulers.mainThread(): retrofitService

DerWeltraum 1078

安卓首屏广告开发

作为一个成熟的应用, 必须要有广告. 那么, 如何优雅地开发广告呢? 需要注意一些细节. 本文提供一个简单的示例, 注释详尽, 可以学习一些页面架构和处理细节, 代码仅供参考.

不给失败找借口,只给成功想办法 1587

【Rxandroid】Rxandroid源码解读

目录1.AndroidSchedulers类的源码2.RxAndroidPlugins类的源码3.RxAndroidSechedulersHook类的源码4.LooperScheduler类的源码5.HandlerScheduler类的源码6.BuildConfig类的源码7.MainThreadSubscription类的源码总结将Rxandroid(1.2.1)引入我们的项目工程之后,可以看到Rxandroid的包结构Rxandroid的包结构从包结构中,我们了解到相比于Rxjava多了如下几个类:从源

itbird的专栏 716

RxJava 和 RxAndroid 一 (基础)

1、RxJava 项目地址    https://github.com/ReactiveX/RxJava   2、RxAndroid 项目地址    https://github.com/ReactiveX/RxAndroid   3、RxJava 和 RxAndroid 的关系      RxAndroid是RxJava的一个针对Android平台的扩展,主要用于 Android ...

陈立的博客 530

android RxJava(RxAndroid)的简单使用

今天,简单讲讲android里如何使用RxJava(RxAndroid)。   Android框架系列: 一.android EventBus的简单使用 二.android Glide简单使用 三.android OKHttp的基本使用详解 四.android RxJava(RxAndroid)的简单使用   可能大家听都没有听说过这个框架,但是现在其实已经很火了。在面试时,很多公...

谢岩的博客 1万+

这么理解RxAndroid之一认识RxAndroid

前言我目前还在边学别写,极有可能出现很多理解不到位而闹的笑话,请留言指正。 我学习的链接就是gank.io上扔物线大哥的给 Android 开发者的 RxJava 详解前言 什么是RxAndroid RxAnroid能解决什么问题 如何通俗地理解RxAndroid RxAndroid的简单实现什么是RxAndroid?要说RxAndroid还得先说RxJava,大家可以从这2个词看出来Rx是相

parcool的专栏 3721

RxAndroid的使用方式(一)

RxAndroid一个功能强大的框架,强大意味掌握成本比较高,断断续续研究了很久,今天写出来,输出才是更好的输入.Rx是什么Rx并不是一种新的语言,而是一种普通的Java模式,类似于观察者模式(Observer Pattern),可以将它看作一个普通的Java类库,因此你可以立即使用RxJava。而RxAndroid是RxJava的一个针对Android平台的扩展,主要用于 Android 开发。R

wang_8649的博客 1107

RxAndroid的基础使用

作为一个android开发者,在开发应用的过程中避免不了异步这个问题。android系统为我们提供了Handler这个类帮助我们进行线程间的通信和切换,但是GitHub上也有很多其他非常优秀的开源框架来帮助我们进行异步处理,比如今天学习的RxAndroid。 简介 GitHub传送门:https://github.com/ReactiveX/RxAndroid RxAndroid是一套观察者模式、...

Dimanche的博客 1138
上一篇: ButterKnife
下一篇: RxAndroid的环境搭建(二)
老伞czx
博客等级 码龄9年 8粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值