引用 implementation 'io.reactivex.rxjava2:rxandroid:2.0.2' implementation 'io.reactivex.rxjava2:rxjava:...2.1.10' Github地址 使用 延迟执行 Kotlin Observable.timer(1000, TimeUnit.MILLISECONDS) .observeOn(AndroidSchedulers.mainThread...()) .subscribe { } 多线程 常用的方式是分线程中处理数据,主线程中使用数据生成页面 Kotlin Observable .create<List<TreeItemModel
前言 Android原生的多线程和异步处理简直糟透了,反复的嵌套让代码看起来十分不明了,多线程上也没有iOS的dispatch好用,但是用了Rxjava后就会有所改善,虽然代码量看起来会多一点,但是逻辑就清晰多了...) 背压(backpressure):只有上下游运行在各自的线程中,且上游发射数据速度大于下游接收处理数据的速度时,才会产生背压问题。...看上去是发布者订阅了订阅者,之所以这样是因为链式代码的优雅 线程(Scheduler) 常用的方式是分线程中处理数据,主线程中使用数据生成页面 Observable .create(new ObservableOnSubscribe...concatMap发射的数据集是有序的,flatMap发射的数据集是无序的 filter 过滤 假如我们要大于5的数 Integer[] nums = {3, 4, 5, 6, 7}; Observable...而不是错误的前一个事件 Android中应用 添加依赖 implementation 'io.reactivex.rxjava2:rxandroid:2.0.2' implementation
本文主要对RxJava及常用操作符的使用进行总结,同时对RxJava在Android中几种常见的使用场景进行举例。...中,其中最有名的就是RxJava。...RxAndroid 对于Android开发者来说,使用RxJava时也会搭配RxAndroid,它是RxJava针对Android平台的一个扩展,用于Android 开发。它提供了响应式扩展组件。...,使用AutoDispose可以解决这个问题,它是一个随Android生命周期事件自动解绑Rxjava订阅的方便工具。...使用及Android常见使用场景进行总结,掌握这些还远远不够,RxJava还有许多强大的功能,诸如从磁盘/内存中获取缓存数据,背压策略,联想搜索优化等等。
库 Android 中 RxJava 的使用 Rx相关依赖 implementation 'io.reactivex.rxjava2:rxandroid:2.0.2' implementation 'io.reactivex.rxjava2...https://github.com/ReactiveX/RxJava ——RxJava核心库 https://github.com/ReactiveX/RxAndroid ——RxJava在Android...中使用的扩展库 https://github.com/JakeWharton/RxBinding ——Android控件对RxJava的支持库 https://github.com/trello/RxLifecycle...——帮助RxJava在Android中生命周期的控制,避免内存溢出等问题 https://github.com/pushtorefresh/storio ——数据库对RxJava的支持 https:/...void subscribe(ObservableEmitter emitter) throws Exception { emitter.onNext("发送的数据
回顾 在上一节Android RxJava的使用(一)基本用法中,介绍了RxJava的基本用法。下面来回顾下实现一次RxJava的基本使用。...不急,RxJava还有其他功能呢。 小结 Action的使用为我们减少了不必要的代码,使得写出的代码看上去更加得简洁。...不过就目前来看RxJava还是没有什么优势值得我们去使用,下一篇我还会介绍更多RxJava的用法。慢慢得,你就会发现使用RxJava写出来的代码看上去真的很漂亮。...更多: 更多: Android RxJava的使用(三)转换(map、flatMap) Android RxJava的使用(四)线程控制 —— Scheduler 以上有错误之处感谢指出 参考...:给 Android 开发者的 RxJava 详解 (本文部分内容引用自该博客)
自从LitePal在2.0.0版本中全面支持了Kotlin之后,我也一直在思考如何让LitePal更好地融入和适配Kotlin语言,而不仅仅停留在简单的支持层面。...如果你使用的是Java,那么就在build.gradle中引入如下配置: dependencies { implementation 'org.litepal.android:java:3.0.0...' } 而如果你使用的是Kotlin,那么就在build.gradle中引入如下配置: dependencies { implementation 'org.litepal.android:kotlin...这就是泛型实化不可思议的地方。 那么我们如何使用这个方法呢?...另外也可以阅读我写的专栏《Android数据库高手秘籍》,同样对LitePal的各种使用方法进行了详细地剖析。
前言 最近经常看到RxJava这个字眼,也看到很多人在博客中推荐使用RxJava。...切莫着急,随着慢慢深入就能体会到RxJava带来的方便了) 参考:给 Android 开发者的 RxJava 详解 (本文部分内容引用自该博客) 介绍 在GitHub主页上的介绍: a library...; } }; 不仅基本使用方式一样,实质上,在 RxJava 的 subscribe 过程中,Observer也总是会先被转换成一个Subscriber再使用。如图: ?...后面的几篇我会介绍RxJava的其他功能,还有一些复杂的嵌套关系的处理,到时候知道RxJava的强大之处了) 更多: Android RxJava的使用(二)Action Android RxJava...的使用(三)转换(map、flatMap) Android RxJava的使用(四)线程控制 —— Scheduler 以上有错误之处感谢指出
总而言之, Room功能强大,速度和稳定性不弱,还简单易用,算得上是一个优秀的数据库。 这里总结下使用room数据库的过程和遇到的问题,以及如何稳定的进行数据库的迁移和升级。...首先准备,引入依赖,在app文件夹下的build.gradle中增加: //ROOM数据库 implementation "android.arch.persistence.room:runtime...:1.1.1" kapt "android.arch.persistence.room:compiler:1.1.1" 需要注意的是,使用的是kotlin,annotationProcessor..." 还需引入一个插件:apply plugin: 'kotlin-kapt' 代码结构目录是不是很清晰,在room下dao的单独建dao包,操作接口在这里实现,所有的表定义单独在entity包中。...使用主键 : 一个Entry中至少需要一个主键,使用@PrimaryKey来注释. 自增类型的主键,则可以设置 @PrimaryKey 的 autoGenerate 属性。
坑 先来看看 Android Studio 给的自动实现。...<Int ) : Parcelable 使用 Android Studio 自带的 Add Parcelable Implementation ,然后你就得到了。。。...中是什么样的呢,我们可以先看看 Android Studio 生成的实现: companion object CREATOR : Parcelable.Creator<Worker { override...{ return arrayOfNulls(size) } } 在 Kotlin 中,使用命名的 companion object 确实可以生成一个对应名字的静态字段,并且它是公有的,会随着类的加载而被创建...,我已经封装成了一个工具类,添加依赖即可使用 – KotlinUtils Kotlin使用parcelable出现:BadParcelableException: Parcelable protocol
跟compose操作符相结合 compose操作于整个数据流中,能够从数据流中得到原始的Observable/Flowable......个人习惯把一些工具类来用Kotlin来编写,而且使用lambda表达式也更为直观。...RxLifecycle中的LifecycleTransformer trello出品的RxLifecycle能够配合Android的生命周期,防止App内存泄漏,其中就使用了LifecycleTransformer....... } 如果你想在RxJava的链式调用中也使用缓存,还可以考虑使用transformer的方式,下面我写了一个简单的方法 /** * Created by Tony Shen on...追踪RxJava的使用 初学者可能会对RxJava内部的数据流向会感到困惑,所以我写了一个类用于追踪RxJava的使用,对于调试代码还蛮有帮助的。
前两篇Android RxJava的使用(一)基本用法、Android RxJava的使用(二)Action介绍了RxJava的基本用法,对Rxjava还不了解的请先看以上两篇。...这篇为大家讲解RxJava中map和flatMap的使用。...参考:给 Android 开发者的 RxJava 详解 (本文部分内容引用自该博客) 回顾 前两篇为大家介绍了使用RxJava打印多个字符串的方法 Observable.just("Hellow...,只是为大家演示如何使用Rxjava。...以上有错误之处感谢指出 更多: Android RxJava的使用(四)线程控制 —— Scheduler 参考:给 Android 开发者的 RxJava 详解 (本文部分内容引用自该博客)
前言 Rxjava由于其基于事件流的链式调用、逻辑简洁 & 使用简单的特点,深受各大 Android开发者的欢迎。...如果还不了解RxJava,请看文章:Android:这是一篇 清晰 & 易懂的Rxjava 入门教程 今天,我将为大家带来 Rxjava的的基本使用 & 实际应用案例教学,即常见开发应用场景实现 ,...基本使用 Rxjava的使用方式有两种: 方式1:分步骤实现 方式2:基于事件流的链式调用 具体使用 请看文章Android RxJava:面向初学者的RxJava使用指南 3....中的变换操作符FlatMap()实现嵌套网络请求 具体实现 Android RxJava 实际应用讲解:网络请求嵌套回调 3.5 从磁盘 / 内存缓存中 获取缓存数据 需求场景 功能说明...对于从磁盘 / 内存缓存中 获取缓存数据 的功能逻辑如下: 具体实现 Android RxJava 实际应用讲解:从磁盘 / 内存缓存中 获取缓存数据 3.6 合并数据源 需求场景 功能说明
前言 Rxjava,由于其基于事件流的链式调用、逻辑简洁 & 使用简单的特点,深受各大 Android开发者的欢迎。...今天,我将为大家带来 Rxjava中的常见开发应用场景:从磁盘、内存缓存中获取缓存数据 ,希望大家会喜欢。...Carson带你学RxJava系列文章,包括 原理、操作符、应用场景、背压等等,请看文章:Android:这是一份全面 & 详细的RxJava学习指南 目录 1....需求场景 注:关于 Rxjava中的创建操作符firstElement()和 concat()的使用请看文章 Android RxJava:最基础的操作符详解 - 创建操作符 Android RxJava...总结 本文主要讲解了 Rxjava的实际开发需求场景:从磁盘 / 内存缓存中 获取缓存数据
入门指南 首先,我将带大家入门 RxJava,主要介绍其作用、基础使用等,解决的是:初学者不理解Rxjava原理 & 不懂得如何使用的问题。...带你学RxJava实战:功能防抖 Carson带你学RxJava实战:从磁盘/内存缓存中获取缓存数据 Carson带你学RxJava实战:联合判断 5....带入Android 的新开发语言Kotlin 6....:RxJava过滤操作符 Carson带你学Android:RxJava组合/合并操作符 Carson带你学Android:RxJava变换操作符 Carson带你学Android:RxJava条件...Carson带你学Android:功能防抖 Carson带你学Android:从磁盘/内存缓存中获取缓存数据 Carson带你学Android:联合判断
关于 Kotlin 开发 使用 Kotlin 开发 Android App 在 Java 工程师群体中变得越来越流行。如果你由于某些原因错过了 Kotlin,我们强烈建议你看一下这篇文章。...数据处理 Kotlin 中有一个拓展函数的特性,这个特性可以使 Kotlin 标准库(stdlib)支持 JDK 的中的类的方法。...但是由于 Android 工程师不能使用 Stream API,所以他们更多的使用的 RxJava 处理数据的方法来解决这个问题。...然后,这种操作并不完全正确,原因在于:RxJava 是一个事件处理库,而不是数据处理。所以你现在可以使用 Kotlin 来解决这个问题而不必担心这些问题。...Kotlin 集合是如何使用 Java 的 List 。
本文介绍了Android使用Kotlin和RxJava 2....= null // Subscription 对象,用于取消订阅关系,防止内存泄露 //开始倒计时,用 RxJava2 实现 private fun timer() { val count = 59L...Flowable.interval(0, 1, TimeUnit.SECONDS)//设置0延迟,每隔一秒发送一条数据 .onBackpressureBuffer()//加上背压策略...{ timer.isEnabled = false//在发送数据的时候设置为不能点击 timer.textColor = resources.getColor(Color.GRAY...printStackTrace() } }) } 以上就是本文的全部内容,希望对大家的学习有所帮助。
(对RxJava还不了解的可以出门左拐) 之前的代码中,事件的发起和消费都是在同一个线程中执行,也就是说之前我们使用的RxJava是同步的~~~ 观察者模式本身的目的不就是后台处理,将处理结果回调给前台...所以,这篇为大家介绍RxJava的重要的概念——Scheduler 参考:给 Android 开发者的 RxJava 详解 (本文部分内容引用自该博客) 介绍 RxJava在不指定线程的情况下,...Schedulers.io(): I/O 操作(读写文件、读写数据库、网络信息交互等)所使用的 Scheduler。...observeOn()可以多次使用,可以随意变换线程 小结 学会线程控制后才算是真正学会了使用RxJava。RxJava的使用十分灵活,想要对其熟悉使用只有一个办法,那就是多用啦,熟能生巧。...以上有错误之处感谢指出 参考:给 Android 开发者的 RxJava 详解 (本文部分内容引用自该博客)
我们以前使用过的 launch、async 函数都是 CoroutineScope 的扩展函数。 GlobalScope 没有绑定任何 Job 对象,它用于构建最顶层的协程。...这些协程的生命周期会跟随着 Application。 在 GlobalScope 中创建的 Coroutines,是有可能会导致应用崩溃的。...在 View 中创建 autoDisposeScope 在 Android View 中创建的 Coroutines,需要跟 View 的生命周期绑定。...// 在 Android View 中创建 autoDisposeScope,支持主线程运行、异常处理、Job 能够在 View 的生命周期内自动 Disposable val View.autoDisposeScope...总结 https://github.com/fengzhizi715/Lifecycle-Coroutines-Extension,本文是对该库的一次升级,也是对近期使用 Kotlin Coroutines
Butter Knife 黄油刀大家应该都挺熟悉的,有这个之后,就不用写一堆的findViewById,体力活,最近试着玩玩Kotlin语言,也就尝试在Kotlin语言环境下使用ButterKnife,...先看看java环境的用法 1.安装插件,然后重启Android studio。 ?...project.jpg 3.添加对kotlin的支持 apply plugin: 'com.android.application' apply plugin: 'kotlin-android-extensions...' apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt' dependencies { implementation fileTree...添加kotlin支持.jpg 4.使用,直接用就好,不用再BindView了。 ? 不需要BindView了.jpg ? 直接使用.jpg 5.注意要对应的xml,以免同样的控件id引起空指针异常。
有可能有的同学问了,既然它基于线程池,那我直接使用线程池或者使用 Android 中其他的异步任务解决方式,比如 Handler、RxJava等,不更好吗?...引入 Android Jetpack 协程扩展库官方文档:点我打开 二、流 长期以来,在 Android 中响应式编程的首选方案是 RxJava,我们今天就来了解一下 Kotlin中的响应式编程 Flow...曾经我在《即学即用Android Jetpack - ViewModel & LiveData》一文中说过,LiveData 的使用类似于 RxJava,现在我收回这句话,事实上,LiveData 更加简单和纯粹...改变消费数据的线程 我在上面的表格中并没有写到在 Flow 中如何改变消费线程,并不意味着 Flow 不可以指定消费线程?...RxJava 中的 flatmap,将你发射出去的数据源转变为另一种数据源。
领取专属 10元无门槛券
手把手带您无忧上云