RxJava

阿里雷卷:Reactive 基金会的成立将对开发方式带来哪些影响?

爱⌒轻易说出口 提交于 2019-12-09 17:34:02
作者 | 赵钰莹 近日,Linux 基金会宣布成立 Reactive 基金会。对于 Reactive,各位开发者应该并不陌生,尤其是 Node.js 开发者,但真正了解并意识到这件事情对开发方式带来的影响的恐怕不多。本文,InfoQ 有幸第一时间对推动阿里巴巴成为该基金会初创成员的阿里巴巴资深技术专家雷卷进行了独家采访,进一步全面了解 Reactive 基金会的成立背景及其对开发方式的发展推动。 Reactive 基金会是什么? 近日,Linux 基金会 宣布启动 Reactive 基金会,旨在加速发展构建下一代网络应用程序的架构。该基金会由阿里巴巴、Facebook、Lightbend、Netifi 和 Pivotal 等初始成员组成。涉及成功的开源规范 Reactive Streams 和 RSocket,以及编程语言实现。 虽然 Reactive 基金会刚刚成立,但 Reactive,也就是开发者常说的响应式编程,已经发展多年。2011 年,Reactive 就开始步入大众视野, 当时微软在 .Net Framework 4.0 中内置了Reactive 支持,称之为 Reactive Extensions。2013 年,广大 Java 开发者熟知的 RxJava 发布。接下来,Reactive 进入飞速发展阶段,先后出现了 RxRuby、RxJS(感兴趣的开发者可以访问

RxJava(ReactiveX,Observable)的一些大白话

女生的网名这么多〃 提交于 2019-12-09 10:20:53
一部分人压根就没想过Publisher和Subscriber的代码分别在什么线程里执行, 做Android的人天然会意识到这个,因为很多例子里都会写subScribeOn(Schedulers.io())和observeOn(AndroidSchedulers.mainThread()),所以没问题。 做了个测试工程 RxJava_Test 。代码都是在 RxJava_Test.java 里。 得到几个大白话的结论,可不容易在reactivex的文档里明确找到。 文档里那一堆花花绿绿的图真的能够给人信心吗?虽说画的很有道理,连thread的颜色都有区别,可总不容大白话好啊。 1. 线程指定 如果subscribeOn和observeOn都不指定,那么所有的动作都在当前线程里顺序执行。他们的作用分别是指定了Publisher和Subscriber的动作在什么thread里执行。 subscribeOn(scheduler) 这个函数名字取得真不合适,让人误以为subscriber的回调函数执行在指定的thread里,实际上是指定了Publisher代码执行在指定的thread里。 非要抬杠的话,由于后续的subscriber默认就的确被调用在该thread里,而且publisher的动作实际是在OnSubscibe callback里才被执行的,所以这个函数名马马虎虎说得过去,但是

跟我一起看Retrofit 2.0的源码

偶尔善良 提交于 2019-12-07 21:15:21
跟我一起看Retrofit 2.0的源码 标签(空格分隔): Retrofit RxJava 背景 Android 6.0(SDK 23)推出后,Apache的HttpClient被弃用。之前一些常用的框架如 xUtils , android-async-http 都需要依赖HttpClient,现在用起来都不方便了。幸好有 Retrofit 补上这个漏,而且还被得更好。 Retrofit是Square公司出口的一个网络请求框架,本质上是对 OkHttp 的包装,非常适合Android平台使用。目前最新版本是2.0 beta2,所以下面所说的Retrofit都是指Retrofit 2.0。 使用样例 在看源码之前,我们先熟悉一下Retrofit的使用方式。下面介绍两种使用Retrofit的方式,分别是Call<T>方式和RxJava方式。都是基于Gradle。在项目中创建项目之后, Call<T>方式 在项目的build.gradle文件中添加Retrofit的依赖, compile 'com.squareup.retrofit:retrofit:2.0.0-beta2' compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2' 创建实体类和一个接口,如下 public class GithubUser { public

android流式布局、待办事项应用、贝塞尔曲线、MVP+Rxjava+Retrofit、艺术图片应用等源码

◇◆丶佛笑我妖孽 提交于 2019-12-07 10:19:08
Android精选源码 android模仿淘宝首页效果源码 一款艺术图片应用,采用T-MVVM打造 Android MVP + RxJava + Retrofit项目 android流式布局实现热门标签效果 android仿淘宝客户端商品详情页效果源码 利用sectionedRecyclerViewAdapter实现分组列表的recyclerView Android菜单和主界面同时滑动效果源码 代办事项应用TODO 采用众多框架 搜索之贝塞尔曲线和横移动动画 android个人中心页面效果源码 <br/> Android优质博客 Android 进程间通信 什么是进程按照操作系统中的描述:进程一般指一个执行单元,在 PC 和移动设备上指一个程序或者一个应用。为什么要使用多进程我们都知道,系统为 APP 每个进程分配的内存是有限的,如果想获取更多内存分配,可以使用多进程,将一些看不见的服务、比较独立而又相当占用内存的功能运行在另外一个进程当中。如何使用多进程AndroidM... 阅读原文 利用高德地图API打造基于LBS的Android应用 最近做了一个小的项目,主要功能是获取用户的定位等相关数据用于分析,在开发过程中使用了高德地图SDK,这里结合自己遇到的问题总结一些常见的API的用法,方便以后参考使用。一、申请Key二、配置工程三、定位SDK的使用四、地图SDK的使用五、总结

View 体系详解:View 的工作流程

左心房为你撑大大i 提交于 2019-12-06 07:09:30
1、View 树的加载流程 文末有免费福利哦 当我们调用 startActivity() 方法的时候,会调用到 ActivityThread 中的 performLaunchActivity() 获取一个 Activity 实例, 并在 Instrumentation 的 callActivityOnCreate() 方法中调用 Activity 的 onCreate() 完成 DecorView 的创建。这样我们就获取了一个 Activity 的实例,然后我们调用 handleResumeActivity() 来回调 Activity 的 onResume() : private void handleLaunchActivity(ActivityClientRecord r, Intent customIntent, String reason) { // .... WindowManagerGlobal.initialize(); // 创建 Activity 的实例,在这里完成对 Activity 的 onCreate() 方法的回调 Activity a = performLaunchActivity(r, customIntent); if (a != null) { // ... // 在这里回调 Activity 的 onResume() 方法

CompletableFuture

感情迁移 提交于 2019-12-05 18:08:08
感觉好久没有更新点东西了,自己都看不下去了啊…… 前言 CompletableFuture 是 java8 提供的功能,java8至今已经挺久了,所以也不能算新东西,不过之前android的开发不太用到java8的特性,就连stream也用的是rxjava。 Future 在理解CompletableFuture,先理解Future还是非常重要的。因为CompletableFuture算是Future的增强版。 Future用于表示一个带返回值的异步计算过程。内部方法包括获取返回值,cancel任务,查看任务是否完成等。 Future有几个继承 RunnableFuture 同时继承了Runnable和 Future的一个接口。最常用的FutureTask就是这个接口的实现类。ExecutorThreadPool调用submit方法就会创建一个FutureTask对象的返回。 ScheduledFuture 继承了Future 和 Delayed 接口的一个接口,用于表示一个带delay效果的Future。然后RunnableScheduledFuture 进一步继承了ScheduledFuture 和 RunnableFuture,实际上就表示一个带有delay和周期运行功能的 RunnableFuture。他的最终实现类就是ScheduledFutureTask. 通过

ScrollView(RecyclerView等)为什么会自动滚动原理分析,还有阻止自动滑动的解决方

十年热恋 提交于 2019-12-05 14:58:00
引言,有一天我在调试一个界面,xml布局里面包含Scroll View,里面嵌套了recyclerView的时候,界面一进去,就自动滚动到了recyclerView的那部分,百思不得其解,上网查了好多资料,大部分只是提到了解决的办法,但是对于为什么会这样,都没有一个很好的解释,本着对技术的负责的态度,花费了一点时间将前后理顺了下 1.首先在包含ScrollView的xml布局中,我们在一加载进来,ScrollView就自动滚动到获取焦点的子view的位置,那我们就需要看下我们activity的onCreate中执行了什么? 答:当我们在activity的onCreate方法中调用setContentView(int layRes)的时候,我们会调用LayoutInflater的inflate(XmlPullParser parser, @Nullable ViewGroup root, boolean attachToRoot)方法,这里会找到xml的rootView,然后对rootView进行rInflateChildren(parser, temp, attrs, true)加载xml的rootView下面的子View,如果是,其中会调用addView方法,我们看下addView方法: public void addView(View child, int index,

android打飞机游戏、MVP句子迷App、悬浮窗、RxJava+Retrofit、加载动画、定制计划App等源码

我的未来我决定 提交于 2019-12-05 02:54:24
Android精选源码 微信打飞机 android进度设置加载效果源码 Android新手引导库EasyGuide MVP-好看又好用的句子迷客户端 XFloatView 一个简易的悬浮窗实现方案 android高仿微信支付宝扫一扫的效果(弱光检测自动放大) Android一个用于制定各种计划的APP源码 android实现UC首页头部交互效果源码 基于OKHTTP的文件下载 Android RxJava+Retrofit各种实例源码 Android优质博客 移动导航设计,看这一篇就够了 平常我们去商场或者景点逛的时候,通常会看到整个景区或者整个商场的导游图,能让我们知道身处何地并且快速的找到目的地。投射到一个虚拟的产品上面,同样是一个“商场”或“景点”,为了让用户能够顺利的在产品中畅行,则必须为用户提供一个有效的导航系统,让用户时刻清楚自己在应用中所处的位置,及如何前往目的页面。产品的导航系统,是产品... 阅读原文 Android TabLayout使用详解 通常在ViewPager的上方,我们都会放一个标签指示器与ViewPager进行联动。以前,我们大多使用的是GitHub上的开源框架PagerSlidingTabTrip。而现在,我们可以使用Android自带的控件TabLayout来实现这个效果了,而且TabLayout更为强大,因为Tab标签可以使用自定义View..

Android 单元测试和 UI 测试初步实践

我们两清 提交于 2019-12-04 23:27:21
Android 测试简介 对于大多数 Android 商业项目,基本都是处于高速迭代的开发阶段,这个阶段不仅仅是对项目的开发效率,也对项目的产品质量提出了更高的要求。 通常大型项目都是通过黑盒测试等方式来提供质量相关的保障,但同时笔者认为也需要 Android 端的单元测试以及能自动在 Android 平台上运行的 UI 测试,这几种测试有以下几个优势: 更早发现代码中存在的 bug 等问题,提前 fix bug; 更好地设计:在进行项目重构的时候,保证重构的新代码能正确运行,这样就能在业务不断迭代的同时,更好地保障产品质量。 Android 测试代码位置 在 Android Studio 中新建新的项目时,它已自动为两种测试类型创建了对应的代码目录: 单元测试用例:位于 module-name/src/test/java 目录下,只依赖 JVM 环境而不需要 Android 环境 InstrumentTest 测试/ UI 测试用例:位于 module-name/src/androidTest/java 目录下,在 Android 环境下才能运行 接下来,笔者将尝试为自己的项目(基于 MVP 架构开发)补充相应的单元测试用例和 UI 测试用例,来初步实践下如何在 Android 平台编写和运行相关的测试用例。 Android 单元测试实践 创建新用例

android完整资讯App、Kotlin新闻应用MVP + RxJava + Retrofit + Dagger2、优雅区间选择器等源码

佐手、 提交于 2019-12-04 05:58:18
Android精选源码 Android完整资讯客户端源码 android展示注册进度效果源码 Android Wifi热点数据传输Socket 通信示例源码 Android Dota的辅助信息app源码 Android 播报栏 一款Kotlin新闻客户端, MVP + RxJava + Retrofit + Dagger2 TODO 最适合练习主流框架的应用 (原创作者) BezierSeekBar优雅的区间选择器,贝塞尔曲线样式,丰富的自... Android优质博客 Android Activity四种启动模式图文详解 Activity是安卓上最聪明的设计之一,优秀的内存管理让多任务完美运行在最流行的操作系统之上。并不是让Activity在屏幕上启动就完事了,其启动方式也是需要关注的。这个话题的内容很多,其中很重要的就是启动模式(launchMode)。这也是我们这篇博客要讨论的内容。因为不同的Activity有不同的目的。有些被设计... 阅读原文 Android View绘制源码分析 Layout FrameLayout的位置是在父类View中就确定了的,不像measure流程大小是由子View的大小确定,自定义ViewGroup必须实现onLayout方法,因为在ViewGroup中该方法是个抽象方法,在layout执行完成后调用View的getWidth