首页
学习
活动
专区
圈层
工具
发布

RxJava2 实战(1) - 后台执行耗时操作,实时通知 UI 更新

最近刚好也在学习rxjava2,So,一起学习咯。...前言 接触RxJava2已经很久了,也看了网上的很多文章,发现基本都是在对RxJava的基本思想介绍之后,再去对各个操作符进行分析,但是看了之后感觉过了不久就忘了。...偶然的机会看到了开源项目 RxJava-Android-Samples,这里一共介绍了十六种RxJava2的使用场景,它从实际的应用场景出发介绍RxJava2的使用,特别适合对于RxJava2已经有初步了解的开发者进一步地去学习如何将其应用到实际开发当中...示例 2.1 应用场景 当我们需要进行一些耗时操作,例如下载、访问数据库等,为了不阻塞主线程,往往会将其放在后台进行处理,同时在处理的过程中、处理完成后通知主线程更新UI,这里就涉及到了后台线程和主线程之间的切换...需要在主线程进行UI更新的操作,对应于DisposableObserver的所有回调,具体的是在onNext中进行进度的更新;在onComplete和onError中展示最终的处理结果。

2.5K80

RxJava2 实战知识梳理(1) - 后台执行耗时操作,实时通知 UI 更新

偶然的机会看到了开源项目 RxJava-Android-Samples,这里一共介绍了十六种RxJava2的使用场景,它从实际的应用场景出发介绍RxJava2的使用,特别适合对于RxJava2已经有初步了解的开发者进一步地去学习如何将其应用到实际开发当中...二、示例 2.1 应用场景 当我们需要进行一些耗时操作,例如下载、访问数据库等,为了不阻塞主线程,往往会将其放在后台进行处理,同时在处理的过程中、处理完成后通知主线程更新UI,这里就涉及到了后台线程和主线程之间的切换...那么,让我们看一些在RxJava中如何完成这一需求。...需要在主线程进行UI更新的操作,对应于DisposableObserver的所有回调,具体的是在onNext中进行进度的更新;在onComplete和onError中展示最终的处理结果。...四、小结 这个系列的第一篇文章,我们介绍了如何使用subscribeOn/observeOn来实现后台执行耗时任务,并通知主线程更新进度。

82320
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    五分钟带你感受RxJava的优雅

    拿我们平时经常处理的网络请求场景做例子,数据可以理解为被观察者,UI元素可以理解为观察者。UI元素会根据数据的变化做响应的改变。RxJava就是基于这么种思想的编程风格。...代码对比--不使用RxJava 我们写了个demo,用来请求某地区的天气情况,然后更新到UI。 demo中用OkHttp来做网络请求,请求返回的json结果封装成 WeatherBean 类。...子线程不允许更新UI的问题相信大家都知道,所以这里需要post到当前的Activity去更新UI。 挺简单的一段代码,但我们还是觉得太繁琐。...这样就完成了一次网络的请求和UI更新。 链式调用+统一缩进,比用OkHttp的代码的阅读性提升了许多。但它的优势不仅如此,RxJava其中一个很重要的特性才是它被普遍使用的原因。 那就是线程切换。...上面说了,网络请求是在子线程中操作,而更新UI必须在主线程。这也是用OkHttp写的代码读起来难受的原因,因为需要写繁琐的代码去切换线程。

    86230

    轻量级kotlin + Mvp + Rxjava + Retrofit框架

    适合团队的框架才是好的框架 1.项目简介 本项目是基于kotlin + Mvp + Rxjava + Retrofit 封装的轻量级模板项目。项目没有过多冗余的依赖, 适用于快速开发以及新手练手。...presenter实现方法接口 │ │ └── model 数据加载层 │ │ └── presenter 逻辑处理层(数据加载页面显示) │ ├── ui...适合团队的框架才是好的框架 5.技术要点 主要使用的第三方开源框架有: RxJava RxAndroid Retrofit Glide Logger SmartRefreshLayout 6.后续更新...各种工具类封装 shape以及gradient各种图形封装 动画封装 8.特别感谢 MvpArms KotlinMvp 9.项目地址 你的Star和Fork是我永生的追求 发布者:全栈程序员栈长,转载请注明出处...:https://javaforall.cn/107283.html原文链接:https://javaforall.cn

    66260

    锦囊篇|一文摸懂RxJava

    这个版本中,更新了一下的内容: (1)包结构变化RxJava 3 components are located under the io.reactivex.rxjava3 package (RxJava...在Android的开发过程中我们一直已经都有一个强烈的概念叫做耗时任务不要放在UI线程来运作,那我们的RxJava呢?回到我们上述的代码中,做一个实验进行一下观察。...图中显示到工作线程切换了,但是如何进行UI的数据更新就又成了一个问题了,当然我们还是可以自己加入Handler来解决问题的。...那么对应到我们的RxJava,显然是Observable是产生者,而Observer是消费者,那么我们也就知道了谁应该在IO线程了,显然是Observable,而Observer应该处于UI线程了。...因为我们要进行UI线程的数据更新,自然是不会使用上述的方法进行的,那RxJava是如何完成这样的操作的呢。

    1K20

    【RxJava】RxJava 基本用法 ( 引入 RxJava 依赖 | 定义 Observer 观察者 | 定义 Observable 被观察者 | 被观察者订阅观察者 )

    一、RxJava 基本用法 本章节涉及到的 RxJava 组成要素 : Observable(被观察者): Observable 是一个 可以发送消息的数据源 , 可以同时发送若干消息 , 消息的格式可以通过泛型进行定义...:rxjava:2.2.21' } rxjava3 依赖 : dependencies { implementation 'io.reactivex.rxjava3:rxjava:3.0.0' } Maven...项目中 , 在 pom.xml 中添加如下依赖 ; io.reactivex.rxjava2 rxjava...Observer 观察者 是 操作的核心 , 定义在需要进行具体操作的位置 , 执行具体的 异步操作 或 事件 ; 如 : 在 UI 界面中 , 点击按钮 , 查询远程数据库服务器中的数据 , 查询完毕后更新...UI 界面 ; 该 Observer 观察者 就需要 定义在 UI 界面中 , 可以获取到相关的 UI 组件进行数据更新 ; Observable 被观察者可以定义在 Observer 观察者位置 ,

    1.3K20

    RxJava在Android中的应用

    订阅disposables.add(model.getUsers().observeOn(AndroidSchedulers.mainThread())//切换到主线程更新UI.subscribe(users...->{view.hideLoading();view.showUsers(users);//成功:更新UI},error->{view.hideLoading();view.showError("加载失败...View通过观察ViewModel中的数据变化来自动更新UI,ViewModel则负责准备和管理这些数据。RxJava可以作为ViewModel内部处理异步数据流的强大工具,最终将结果暴露给View。...生命周期感知:LiveData和StateFlow能自动感知Activity/Fragment的生命周期,避免在非活跃状态下更新UI。数据驱动UI:UI的状态完全由数据决定,逻辑更清晰。...挑战:桥接成本:需要将RxJava流转换为LiveData或StateFlow,增加了复杂性。学习曲线:需要同时理解MVVM、数据绑定和RxJava。

    19110

    零基础理解RxJava和响应式编程

    而网络请求返回数据,到数据更新到UI上,也是一种响应。...RxJava的核心思想在这里,通常我们需要编写大量代码来控制响应的逻辑,有时候还需要处理一些异常情况,比如请求失败,数据为空的处理,也有可能用户已经切换出当前界面,这时候就需要处理一下把数据更新到一个已经被回收的...像更新UI的操作,众所周知需要在UI线程进行,上面的网络请求代码 setName 可能在子线程返回,我们需要让这些地方跳回到主线程去。...你看这堆东西,我们用一大段的代码只是保证了一个简单的UI更新操作,并且还没有考虑实际场景中的问题。一旦把它投入到实际应用中,你就需要处理一堆繁琐的代码。...在上面的例子中,println事件就是一种响应,而UI更新,tv.setText也是一种响应。

    90720

    看到如此多的MVP+Dagger2+Retrofit+Rxjava项目,轻松拿star,心动了吗?

    RxCache 等 Rx 系三方库,并且提供 UI 自适应方案,本框架将它们结合起来,并全部使用 Dagger2 管理并提供给开发者使用,使用本框架开发你的项目就意味着你已经拥有一个 MVP + Dagger2...的所有内容, 快速并且零错误) 一键生成 MVP, Dagger2 相关类 (使用此 页面级 模板可直接生成 Wiki 文档第二章 快速开始 的所有内容, 快速并且零错误) MVPArms 学习项目 更新日志...意见收集 扩展项目, 了解一下: MVPArms 官方组件化方案 ArmsComponent 改造 Android 官方架构组件 ViewModel 一行代码监听 App 中所有网络链接的上传以及下载进度...proguard-rules.pro 进行混淆),混淆前务必注意将 Java Bean ,自定义组件 等必需的规则添加进 proguard-rules.pro 1.6 版本更新...这里的Module提供当前业务逻辑对应的View和Model接口(Contract中定义的接口)的实现类,Model需要AppComponent中提供的RepositoryManager来实现网络请求和缓存

    3.3K30

    RxJava系列番外篇:一个RxJava解决复杂业务逻辑的案例

    之前写过一系列RxJava1的文章,也承诺过会尽快有RxJava2的介绍。无奈实际项目中还未真正的使用RxJava2,不敢妄动笔墨。...对RxJava还不了解的同学可以先去看看我之前的RxJava系列文章: RxJava系列1(简介) RxJava系列2(基本概念及使用介绍) RxJava系列3(转换操作符) RxJava系列4(过滤操作符...之所以这样做是为了在无网络状况下去创建不必要的Observable observableForGetWeatherFromNetWork; 更新数据库的操作不应该阻塞更新UI,因此我们在observableForGetWeatherFromNetWork...的doOnNext中需要通过Schedulers.io().createWorker()去另起一条线程,以此保证更新数据库不会阻塞更新UI的操作。...这样就阻塞了更新UI的操作。

    1.5K80

    MVPArms MVP快速集成框架

    的所有内容, 快速并且零错误) 一键生成 MVP, Dagger2 相关类 (使用此 页面级 模板可直接生成 Wiki 文档第二章 快速开始 的所有内容, 快速并且零错误) MVPArms 学习项目 更新日志...意见收集 扩展项目, 了解一下: MVPArms 官方组件化方案 ArmsComponent 改造 Android 官方架构组件 ViewModel 一行代码监听 App 中所有网络链接的上传以及下载进度...Wiki 详细用法请参照Wiki,下面只是简单的介绍下MVP Contract 根据Google官方的MVP项目,可以在Contract中定义MVP的接口,便于管理,此框架使用Dagger注入Presenter...无需定义Presenter接口,所以Contract只定义Model和View的接口 public interface UserContract { //对于经常使用的关于UI的方法可以定义到...并且继承BaseModel,指定范型为ServiceManager和CacheManager,然后通过两个Manager拿到需要的Service和Cache为Presenter提供需要的数据(是否使用缓存请自行选择

    3.7K1815

    彻底搞清楚 RxJava 是什么东西

    如果你要了解rxjava是什么,由来,以及作用和原理,请点击上面的链接。 针对上面的问题,我们简单的了解下一些基本的概念。 什么是rxJava 一种帮助你做异步的框架....如果需要详细了解的请:https://cloud.tencent.com/developer/article/1035905 但是rxjava和传统的观察者模式又不完全相同,传统的观察者模式是涉及到两个对象观察者...注意:如果你用的是android studio作为ide工具的话,请务必添加rxjava依赖 除了 subscribe(Observer) 和 subscribe(Subscriber) ,subscribe...说到这里,有一个常用的场景:加载几十个图片到UI上,这里说说rxjava的写法 int drawableRes = ...; ImageView imageView = ...; Observable.create..., Toast.LENGTH_SHORT).show(); } }); 这样,加载图片发生在UI线程,而设置显示放到子线程出来,这样就不会出现卡顿。

    22.1K115
    领券