From 1fcceabcfa43b84ceae986177e99f69a7ff68258 Mon Sep 17 00:00:00 2001
From: xinghongfei <18911755084@163.com>
Date: Sun, 16 Oct 2016 15:38:37 +0800
Subject: [PATCH 01/14] update readme
---
README.md | 58 +++++++++++++++++++++++++++----------------------------
1 file changed, 29 insertions(+), 29 deletions(-)
diff --git a/README.md b/README.md
index 16f1961..847ee09 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# Learning RxJava(RxJava详解)
-RxJava的精妙之处就是异步操作极其方便,也就是Schedulers的使用,本项目可以让大家彻底掌握Schedulers的使用,还有操作符、RxAndroid...的使用详解。
+RxJava的精妙之处就是异步操作极其方便,也就是Schedulers的使用,本项目可以让大家彻底掌握Schedulers的使用,还有常用的操作符、RxAndroid...的使用详解。
@@ -15,59 +15,59 @@ RxJava的精妙之处就是异步操作极其方便,也就是Schedulers的使
## 详解
-Schedulers共五种:
+我们可以把Schedulers看作线程控制符,一共五种线程控制符,可以通过这些线程控制符切换不同的线程。以下是五种线程控制符的区别:
-1. `Schedulers.immediate()` 在当前线程运行,相当于不指定线程。这是默认的 Scheduler。
+1. `Schedulers.immediate()` 在当前线程运行,相当于不切换线程。这是默认的 Scheduler。
2. `Schedulers.newThread()`总是启用新线程,并在新线程执行操作。
3. `Schedulers.io()` I/O 操作(读写文件、数据库、网络信息交互等)所使用的 Scheduler。行为模式和 newThread() 差不多,区别在于 io() 的内部实现是是用一个无数量上限的线程池,可以重用空闲的线程,因此多数情况下 io() 比 newThread() 更有效率。不要把计算工作放在 io() 中,可以避免创建不必要的线程。
4. `Schedulers.computation()` 计算所使用的 Scheduler。这个计算指的是 CPU 密集型计算,即不会被 I/O 等操作限制性能的操作,例如图形的计算。这个 Scheduler 使用的固定的线程池,大小为 CPU 核数。不要把 I/O 操作放在 computation() 中,否则 I/O 操作的等待时间会浪费 CPU。
-5. `AndroidSchedulers.mainThread()`指定的操作将在Android 主线程运行。
+5. `AndroidSchedulers.mainThread()` 切换到主线程,指定的操作将在Android 主线程运行。
` 其实我们常用的就2种:Schedulers.io()和AndroidSchedulers.mainThread()`
> 以下几个例子都是使用Observable.just(1,2,3)创建被观察对象,观察者输出1,2,3.
####1. 基本使用
-
-
-
-####2. 使用.subscribeOn(Schedulers.io())设置被观察者的线程
-
-
-
+
+
+
+####2. 使用 subscribeOn(Schedulers.io())设置被观察者的线程
+
+
+
> 以下几个例子中看不出被观察者发生在什么线程,使用Observeble.create()创建被观察者可以看出发生在什么线程,可参看源码中的其它Demo。
-####3. 使用.subscribeOn(Schedulers.io())和.observeOn()设置被观察者和观察者的线程
+####3. 使用 subscribeOn(Schedulers.io()) 和 observeOn() 设置被观察者和观察者的线程
-
-
-
+
+
+
####4. 使用Schedulers.io()指定被观察者产生事件的线程,然后使用Map对数据转换,这里只是在每个数据后面加‘a’。
-
-
-
+
+
+
-####5. 使用Schedulers.io()指定被观察者产生事件的线程,使用Map对数据转换,这里只是在每个数据后面加‘a’,使用AndroidSchedulers.mainThread()切换到主线程,然后使用Map变换,每个数据后加‘b’,输出结果。
+####5. 使用Schedulers.io()指定被观察者产生事件的线程,使用Map对数据转换,在每个数据后面加‘a’,使用AndroidSchedulers.mainThread()切换到主线程,然后使用Map变换,每个数据后加‘b’,输出结果。
-
-
-
+
+
+
-####6. 使用Schedulers.io()指定被观察者产生事件的线程,使用Map对数据转换,这里只是在每个数据后面加‘a’,使用AndroidSchedulers.mainThread()切换到主线程,然后使用Map变换,每个数据后加‘b’,再用Schedulers.io()切换线程,用Map对数据加‘c’,输出结果。
+####6. 使用Schedulers.io()指定被观察者产生事件的线程,使用Map对数据转换,在每个数据后面加‘a’,使用AndroidSchedulers.mainThread()切换到主线程,然后使用Map变换,每个数据后加‘b’,再用Schedulers.io()切换线程,用Map对数据加‘c’,输出结果。
-
-
-
+
+
+
####7.这个例子不同的是使用了两次subscribeOn()来指定被观察者的线程,最终最上面的subscribeOn()起作用,下面的subscribeOn()不起作用。然后使用Map对数据转换,这里只是在每个数据后面加‘a’,使用Schedulers.io()切换线程,然后使用Map变换,每个数据后加‘b’,再用AndroidSchedulers.mainThread()切换主线程,用Map对数据加‘c’,最后再切换到非主线程,输出结果。
-
-
-
+
+
+
>最终发现设置被观察者的线程只有最上面的起作用,下面的不起作用。
From 3dfb7553a7bf4ebb8ec8b9a5734766da908fbfce Mon Sep 17 00:00:00 2001
From: Victor
Date: Wed, 16 Nov 2016 15:19:55 +0800
Subject: [PATCH 02/14] Add some explain to the Read Me on Topics with ExJava
---
README.md | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 847ee09..86f98b3 100644
--- a/README.md
+++ b/README.md
@@ -2,6 +2,16 @@
RxJava的精妙之处就是异步操作极其方便,也就是Schedulers的使用,本项目可以让大家彻底掌握Schedulers的使用,还有常用的操作符、RxAndroid...的使用详解。
+What is Exjava,
+
+The most simply explain one in my mind is
+
+1 "When something happen " THEN
+
+2 " Here is what will happen next"
+
+**Why:** It makes you code 10x faster than whatever you are right now
+
@@ -14,9 +24,12 @@ RxJava的精妙之处就是异步操作极其方便,也就是Schedulers的使
-## 详解
+## 详解 (Details Explain)
我们可以把Schedulers看作线程控制符,一共五种线程控制符,可以通过这些线程控制符切换不同的线程。以下是五种线程控制符的区别:
+To define the "time" of something happen, we need a "Scheduler",
+To define the "things happen" of something happe, we need a "Thread"
+
1. `Schedulers.immediate()` 在当前线程运行,相当于不切换线程。这是默认的 Scheduler。
2. `Schedulers.newThread()`总是启用新线程,并在新线程执行操作。
From f13a9ee698ed49a70c52694b0b61b8b0e241334d Mon Sep 17 00:00:00 2001
From: Victor
Date: Wed, 16 Nov 2016 15:31:36 +0800
Subject: [PATCH 03/14] Add some meaningful words to explain the RxJava
---
README.md | 21 ++++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 86f98b3..5006ffa 100644
--- a/README.md
+++ b/README.md
@@ -28,19 +28,38 @@ The most simply explain one in my mind is
我们可以把Schedulers看作线程控制符,一共五种线程控制符,可以通过这些线程控制符切换不同的线程。以下是五种线程控制符的区别:
To define the "time" of something happen, we need a "Scheduler",
-To define the "things happen" of something happe, we need a "Thread"
+
+To define the "things happen" of something happen, we need a "Thread"
1. `Schedulers.immediate()` 在当前线程运行,相当于不切换线程。这是默认的 Scheduler。
+ **Explain:** Read as "Do it Right now"
+
2. `Schedulers.newThread()`总是启用新线程,并在新线程执行操作。
+
+ **Explain:** Read as "I dont care u are busy or not,Do this too "
+
3. `Schedulers.io()` I/O 操作(读写文件、数据库、网络信息交互等)所使用的 Scheduler。行为模式和 newThread() 差不多,区别在于 io() 的内部实现是是用一个无数量上限的线程池,可以重用空闲的线程,因此多数情况下 io() 比 newThread() 更有效率。不要把计算工作放在 io() 中,可以避免创建不必要的线程。
+
+ **Explain:** Read as "Give me a minutes, I am writing the database "
+
4. `Schedulers.computation()` 计算所使用的 Scheduler。这个计算指的是 CPU 密集型计算,即不会被 I/O 等操作限制性能的操作,例如图形的计算。这个 Scheduler 使用的固定的线程池,大小为 CPU 核数。不要把 I/O 操作放在 computation() 中,否则 I/O 操作的等待时间会浪费 CPU。
+
+ **Explain:** Read as "Give me a minutes, my brain is busy "
+
5. `AndroidSchedulers.mainThread()` 切换到主线程,指定的操作将在Android 主线程运行。
+
+ **Explain:** Read as "Dont do anything else, Just do this one first "
` 其实我们常用的就2种:Schedulers.io()和AndroidSchedulers.mainThread()`
+ **Note:** Schedulers.io() and AndroidSchedulers.mainThread() are the most common one
+
> 以下几个例子都是使用Observable.just(1,2,3)创建被观察对象,观察者输出1,2,3.
+> This example show how to use make a few threads that we can watch their actions
+
+
####1. 基本使用
From d7d91535e6997a7bd80c5ebeef4670e669e718c8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Maat=E7=BA=A2=E9=A3=9E?=
Date: Wed, 16 Nov 2016 15:41:41 +0800
Subject: [PATCH 04/14] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 5006ffa..0b8085a 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
RxJava的精妙之处就是异步操作极其方便,也就是Schedulers的使用,本项目可以让大家彻底掌握Schedulers的使用,还有常用的操作符、RxAndroid...的使用详解。
-What is Exjava,
+What is Rxjava,
The most simply explain one in my mind is
From 27987d409764ea8fc976819c8d049ea50ec33b70 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Maat=E7=BA=A2=E9=A3=9E?=
Date: Wed, 16 Nov 2016 16:51:18 +0800
Subject: [PATCH 05/14] Update README.md
---
README.md | 22 +++-------------------
1 file changed, 3 insertions(+), 19 deletions(-)
diff --git a/README.md b/README.md
index 0b8085a..b666b62 100644
--- a/README.md
+++ b/README.md
@@ -2,16 +2,6 @@
RxJava的精妙之处就是异步操作极其方便,也就是Schedulers的使用,本项目可以让大家彻底掌握Schedulers的使用,还有常用的操作符、RxAndroid...的使用详解。
-What is Rxjava,
-
-The most simply explain one in my mind is
-
-1 "When something happen " THEN
-
-2 " Here is what will happen next"
-
-**Why:** It makes you code 10x faster than whatever you are right now
-
@@ -27,29 +17,23 @@ The most simply explain one in my mind is
## 详解 (Details Explain)
我们可以把Schedulers看作线程控制符,一共五种线程控制符,可以通过这些线程控制符切换不同的线程。以下是五种线程控制符的区别:
-To define the "time" of something happen, we need a "Scheduler",
-
-To define the "things happen" of something happen, we need a "Thread"
-
1. `Schedulers.immediate()` 在当前线程运行,相当于不切换线程。这是默认的 Scheduler。
- **Explain:** Read as "Do it Right now"
+
2. `Schedulers.newThread()`总是启用新线程,并在新线程执行操作。
- **Explain:** Read as "I dont care u are busy or not,Do this too "
+
3. `Schedulers.io()` I/O 操作(读写文件、数据库、网络信息交互等)所使用的 Scheduler。行为模式和 newThread() 差不多,区别在于 io() 的内部实现是是用一个无数量上限的线程池,可以重用空闲的线程,因此多数情况下 io() 比 newThread() 更有效率。不要把计算工作放在 io() 中,可以避免创建不必要的线程。
- **Explain:** Read as "Give me a minutes, I am writing the database "
4. `Schedulers.computation()` 计算所使用的 Scheduler。这个计算指的是 CPU 密集型计算,即不会被 I/O 等操作限制性能的操作,例如图形的计算。这个 Scheduler 使用的固定的线程池,大小为 CPU 核数。不要把 I/O 操作放在 computation() 中,否则 I/O 操作的等待时间会浪费 CPU。
- **Explain:** Read as "Give me a minutes, my brain is busy "
5. `AndroidSchedulers.mainThread()` 切换到主线程,指定的操作将在Android 主线程运行。
- **Explain:** Read as "Dont do anything else, Just do this one first "
+
` 其实我们常用的就2种:Schedulers.io()和AndroidSchedulers.mainThread()`
From 38f2f89867e04a8fd4ab22a99b01e477b6f59dd1 Mon Sep 17 00:00:00 2001
From: niqibiao
Date: Wed, 18 Jan 2017 17:14:43 +0800
Subject: [PATCH 06/14] =?UTF-8?q?1.=E4=BF=AE=E5=A4=8DLogFragment=20?=
=?UTF-8?q?=E6=97=A0=E6=B3=95=E6=BB=91=E5=8A=A8=E5=88=B0=E6=9C=80=E5=BA=95?=
=?UTF-8?q?=E9=83=A8=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/build.gradle | 7 ++-----
.../maat/hello_rxjava/common/logger/LogFragment.java | 9 ++++++++-
build.gradle | 2 +-
3 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index 5ee223d..392faf1 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -2,7 +2,7 @@ apply plugin: 'com.android.application'
apply plugin: 'android-apt'
android {
compileSdkVersion 24
- buildToolsVersion "24.0.3"
+ buildToolsVersion '25.0.0'
defaultConfig {
applicationId "com.demo.maat.hello_rxjava"
minSdkVersion 16
@@ -20,16 +20,14 @@ android {
}
dependencies {
- compile fileTree(dir: 'libs', include: ['*.jar'])
+ compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:24.2.1'
testCompile 'junit:junit:4.12'
-
compile 'com.jakewharton:butterknife:8.4.0'
apt 'com.jakewharton:butterknife-compiler:8.4.0'
-
compile 'io.reactivex:rxandroid:1.0.1'
// Because RxAndroid releases are few and far between, it is recommended you also
// explicitly depend on RxJava's latest version for bug fixes and new features.
@@ -41,6 +39,5 @@ dependencies {
compile 'com.squareup.retrofit2:converter-gson:+'
compile 'com.squareup.retrofit2:adapter-rxjava:+'
compile 'com.google.code.gson:gson:+'
-
compile 'io.reactivex:rxandroid:1.2.1'
}
diff --git a/app/src/main/java/com/demo/maat/hello_rxjava/common/logger/LogFragment.java b/app/src/main/java/com/demo/maat/hello_rxjava/common/logger/LogFragment.java
index 69256ff..5265f7d 100644
--- a/app/src/main/java/com/demo/maat/hello_rxjava/common/logger/LogFragment.java
+++ b/app/src/main/java/com/demo/maat/hello_rxjava/common/logger/LogFragment.java
@@ -98,7 +98,14 @@ public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override
public void afterTextChanged(Editable s) {
- mScrollView.fullScroll(ScrollView.FOCUS_DOWN);
+ //afterTextChanged 在 text发生改变后马上被调用,此时可能text还未被绘制,导致无法滑动到最底部
+ //所以不能直接调用,而应该使用post
+ mScrollView.post(new Runnable(){
+ @Override
+ public void run() {
+ mScrollView.fullScroll(ScrollView.FOCUS_DOWN);
+ }
+ });
}
});
return result;
diff --git a/build.gradle b/build.gradle
index 5a80b7d..aeba529 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,7 +5,7 @@ buildscript {
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:2.2.0'
+ classpath 'com.android.tools.build:gradle:2.2.3'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
From 691bc943e6bae9391090566ea7bb81a992605fb6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Maat=E7=BA=A2=E9=A3=9E?=
Date: Mon, 13 Feb 2017 20:07:42 +0800
Subject: [PATCH 07/14] Update README.md
---
README.md | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index b666b62..e7467b2 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,8 @@
# Learning RxJava(RxJava详解)
-RxJava的精妙之处就是异步操作极其方便,也就是Schedulers的使用,本项目可以让大家彻底掌握Schedulers的使用,还有常用的操作符、RxAndroid...的使用详解。
-
-
-
-
+RxJava的精妙之处就是异步操作极其方便,也就是Schedulers的使用,本项目可以让大家彻底掌握Schedulers的使用,还有常用的操作符、RxAndroid...的使用详解。就是用最简单移动的方式把Rxjava讲明白。
+**为什么做这个项目:**学习Rxjava相信所有人都看过扔物线的《给Android开发者Rxjava的详解》,这片文章后半部分讲对线程的操作,相信很多人不是很容易看懂。这个项目
## Screenshots
From 6625f9e637fc63f8d682737731ce0115872b2229 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Maat=E7=BA=A2=E9=A3=9E?=
Date: Mon, 13 Feb 2017 20:09:11 +0800
Subject: [PATCH 08/14] Update README.md
---
README.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index e7467b2..f797c10 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,9 @@
# Learning RxJava(RxJava详解)
+**为什么做这个项目:**学习Rxjava相信所有人都看过扔物线的《给Android开发者Rxjava的详解》,这片文章后半部分讲对线程的操作,相信很多人不是很容易看懂。这个项目
RxJava的精妙之处就是异步操作极其方便,也就是Schedulers的使用,本项目可以让大家彻底掌握Schedulers的使用,还有常用的操作符、RxAndroid...的使用详解。就是用最简单移动的方式把Rxjava讲明白。
-**为什么做这个项目:**学习Rxjava相信所有人都看过扔物线的《给Android开发者Rxjava的详解》,这片文章后半部分讲对线程的操作,相信很多人不是很容易看懂。这个项目
+
## Screenshots
From b3bf5fe9e50857ada11bd7e39c74bb8df4b86113 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Maat=E7=BA=A2=E9=A3=9E?=
Date: Sat, 18 Feb 2017 09:26:03 +0800
Subject: [PATCH 09/14] Update README.md
---
README.md | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/README.md b/README.md
index f797c10..35a62aa 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,5 @@
# Learning RxJava(RxJava详解)
-**为什么做这个项目:**学习Rxjava相信所有人都看过扔物线的《给Android开发者Rxjava的详解》,这片文章后半部分讲对线程的操作,相信很多人不是很容易看懂。这个项目
-
+**为什么做这个项目:**学习Rxjava相信所有人都看过扔物线的《给Android开发者Rxjava的详解》,这片文章后半部分讲对线程的操作,相信很多人不是很容易看懂。这个项目通过最简单的方式,把Rxjava最核心的内容讲清楚,所以,在学习这个项目前先看扔物线大哥的文章
RxJava的精妙之处就是异步操作极其方便,也就是Schedulers的使用,本项目可以让大家彻底掌握Schedulers的使用,还有常用的操作符、RxAndroid...的使用详解。就是用最简单移动的方式把Rxjava讲明白。
From 396b6139e883b818c112bbc6d85e19d0b92f007b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Maat=E7=BA=A2=E9=A3=9E?=
Date: Sun, 30 Apr 2017 16:44:04 +0800
Subject: [PATCH 10/14] Update README.md
---
README.md | 31 ++++++++++++++-----------------
1 file changed, 14 insertions(+), 17 deletions(-)
diff --git a/README.md b/README.md
index 35a62aa..2bd8738 100644
--- a/README.md
+++ b/README.md
@@ -1,15 +1,13 @@
# Learning RxJava(RxJava详解)
-**为什么做这个项目:**学习Rxjava相信所有人都看过扔物线的《给Android开发者Rxjava的详解》,这片文章后半部分讲对线程的操作,相信很多人不是很容易看懂。这个项目通过最简单的方式,把Rxjava最核心的内容讲清楚,所以,在学习这个项目前先看扔物线大哥的文章
+**为什么做这个项目:** 学习Rxjava,基本所有人都会看扔物线的《给Android开发者Rxjava的详解》,可以说是国内最理想的Rxjava教程了。这片文章后半部分讲对线程的操作,相信很多人都不太懂。这个项目通过最简单的方式,对Rxjava线程操作的进行讲解,让大家彻底明白Rxjava的核心内容。所以,在学习这个项目前先看扔物线大哥的文章。
-RxJava的精妙之处就是异步操作极其方便,也就是Schedulers的使用,本项目可以让大家彻底掌握Schedulers的使用,还有常用的操作符、RxAndroid...的使用详解。就是用最简单移动的方式把Rxjava讲明白。
+RxJava的精妙之处就是异步操作极其方便,也就是Schedulers的使用,本项目可以让大家彻底掌握Schedulers的使用,还有常用的操作符、RxAndroid...的使用详解。就是用最简单移动的方式把Rxjava讲明白.
## Screenshots
-
-
-
-
+
|
|
|
+
## 详解 (Details Explain)
我们可以把Schedulers看作线程控制符,一共五种线程控制符,可以通过这些线程控制符切换不同的线程。以下是五种线程控制符的区别:
@@ -34,51 +32,50 @@ RxJava的精妙之处就是异步操作极其方便,也就是Schedulers的使
` 其实我们常用的就2种:Schedulers.io()和AndroidSchedulers.mainThread()`
- **Note:** Schedulers.io() and AndroidSchedulers.mainThread() are the most common one
-
> 以下几个例子都是使用Observable.just(1,2,3)创建被观察对象,观察者输出1,2,3.
> This example show how to use make a few threads that we can watch their actions
-####1. 基本使用
+#### 1. 基本使用
-####2. 使用 subscribeOn(Schedulers.io())设置被观察者的线程
+
+#### 2. 使用 subscribeOn(Schedulers.io())设置被观察者的线程
> 以下几个例子中看不出被观察者发生在什么线程,使用Observeble.create()创建被观察者可以看出发生在什么线程,可参看源码中的其它Demo。
-####3. 使用 subscribeOn(Schedulers.io()) 和 observeOn() 设置被观察者和观察者的线程
+#### 3. 使用 subscribeOn(Schedulers.io()) 和 observeOn() 设置被观察者和观察者的线程
-####4. 使用Schedulers.io()指定被观察者产生事件的线程,然后使用Map对数据转换,这里只是在每个数据后面加‘a’。
+#### 4. 使用Schedulers.io()指定被观察者产生事件的线程,然后使用Map对数据转换,这里只是在每个数据后面加‘a’。
-####5. 使用Schedulers.io()指定被观察者产生事件的线程,使用Map对数据转换,在每个数据后面加‘a’,使用AndroidSchedulers.mainThread()切换到主线程,然后使用Map变换,每个数据后加‘b’,输出结果。
+#### 5. 使用Schedulers.io()指定被观察者产生事件的线程,使用Map对数据转换,在每个数据后面加‘a’,使用AndroidSchedulers.mainThread()切换到主线程,然后使用Map变换,每个数据后加‘b’,输出结果。
-####6. 使用Schedulers.io()指定被观察者产生事件的线程,使用Map对数据转换,在每个数据后面加‘a’,使用AndroidSchedulers.mainThread()切换到主线程,然后使用Map变换,每个数据后加‘b’,再用Schedulers.io()切换线程,用Map对数据加‘c’,输出结果。
+#### 6. 使用Schedulers.io()指定被观察者产生事件的线程,使用Map对数据转换,在每个数据后面加‘a’,使用AndroidSchedulers.mainThread()切换到主线程,然后使用Map变换,每个数据后加‘b’,再用Schedulers.io()切换线程,用Map对数据加‘c’,输出结果。
-####7.这个例子不同的是使用了两次subscribeOn()来指定被观察者的线程,最终最上面的subscribeOn()起作用,下面的subscribeOn()不起作用。然后使用Map对数据转换,这里只是在每个数据后面加‘a’,使用Schedulers.io()切换线程,然后使用Map变换,每个数据后加‘b’,再用AndroidSchedulers.mainThread()切换主线程,用Map对数据加‘c’,最后再切换到非主线程,输出结果。
+#### 7.这个例子不同的是使用了两次subscribeOn()来指定被观察者的线程,最终最上面的subscribeOn()起作用,下面的subscribeOn()不起作用。然后使用Map对数据转换,这里只是在每个数据后面加‘a’,使用Schedulers.io()切换线程,然后使用Map变换,每个数据后加‘b’,再用AndroidSchedulers.mainThread()切换主线程,用Map对数据加‘c’,最后再切换到非主线程,输出结果。
-
+
@@ -86,7 +83,7 @@ RxJava的精妙之处就是异步操作极其方便,也就是Schedulers的使
`更多的例子请看源码`
-##About me
+## About me
An android developer in Beijing.Welcome to offer me an [Interview invitation](mailto:maat.xing@gmail.com). If you have any new idea about this project, feel free to [contact me](mailto:maat.xing@gmail.com). :smiley:
From 4f91e6ce373eab3ab55baf7099878b0cca600026 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Maat=E7=BA=A2=E9=A3=9E?=
Date: Sun, 30 Apr 2017 16:52:45 +0800
Subject: [PATCH 11/14] Update README.md
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index 2bd8738..c15b899 100644
--- a/README.md
+++ b/README.md
@@ -81,6 +81,7 @@ RxJava的精妙之处就是异步操作极其方便,也就是Schedulers的使
>最终发现设置被观察者的线程只有最上面的起作用,下面的不起作用。
+
`更多的例子请看源码`
## About me
From 7771b6ef1f532cafeba83a6b5f7e3e27f921e74a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Maat=E7=BA=A2=E9=A3=9E?=
Date: Sun, 30 Apr 2017 16:58:38 +0800
Subject: [PATCH 12/14] Update README.md
---
README.md | 24 +++++++++---------------
1 file changed, 9 insertions(+), 15 deletions(-)
diff --git a/README.md b/README.md
index c15b899..a86fc63 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@ RxJava的精妙之处就是异步操作极其方便,也就是Schedulers的使
## Screenshots
-
|
|
|
+
## 详解 (Details Explain)
@@ -38,45 +38,39 @@ RxJava的精妙之处就是异步操作极其方便,也就是Schedulers的使
#### 1. 基本使用
-
-
+
+
#### 2. 使用 subscribeOn(Schedulers.io())设置被观察者的线程
-
-
+
> 以下几个例子中看不出被观察者发生在什么线程,使用Observeble.create()创建被观察者可以看出发生在什么线程,可参看源码中的其它Demo。
#### 3. 使用 subscribeOn(Schedulers.io()) 和 observeOn() 设置被观察者和观察者的线程
-
-
+
#### 4. 使用Schedulers.io()指定被观察者产生事件的线程,然后使用Map对数据转换,这里只是在每个数据后面加‘a’。
-
-
+
#### 5. 使用Schedulers.io()指定被观察者产生事件的线程,使用Map对数据转换,在每个数据后面加‘a’,使用AndroidSchedulers.mainThread()切换到主线程,然后使用Map变换,每个数据后加‘b’,输出结果。
-
-
+
#### 6. 使用Schedulers.io()指定被观察者产生事件的线程,使用Map对数据转换,在每个数据后面加‘a’,使用AndroidSchedulers.mainThread()切换到主线程,然后使用Map变换,每个数据后加‘b’,再用Schedulers.io()切换线程,用Map对数据加‘c’,输出结果。
-
-
+
#### 7.这个例子不同的是使用了两次subscribeOn()来指定被观察者的线程,最终最上面的subscribeOn()起作用,下面的subscribeOn()不起作用。然后使用Map对数据转换,这里只是在每个数据后面加‘a’,使用Schedulers.io()切换线程,然后使用Map变换,每个数据后加‘b’,再用AndroidSchedulers.mainThread()切换主线程,用Map对数据加‘c’,最后再切换到非主线程,输出结果。
-
-
+
>最终发现设置被观察者的线程只有最上面的起作用,下面的不起作用。
From 35b656dff444cb9b490b8d3b5dfba6ef77e4dabf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Maat=E7=BA=A2=E9=A3=9E?=
Date: Sun, 30 Apr 2017 17:00:36 +0800
Subject: [PATCH 13/14] Update README.md
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index a86fc63..f6ec7ad 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
# Learning RxJava(RxJava详解)
-**为什么做这个项目:** 学习Rxjava,基本所有人都会看扔物线的《给Android开发者Rxjava的详解》,可以说是国内最理想的Rxjava教程了。这片文章后半部分讲对线程的操作,相信很多人都不太懂。这个项目通过最简单的方式,对Rxjava线程操作的进行讲解,让大家彻底明白Rxjava的核心内容。所以,在学习这个项目前先看扔物线大哥的文章。
+**为什么做这个项目:** 学习Rxjava,基本所有人都会看扔物线的《给Android开发者Rxjava的详解》,可以说是国内最理想的Rxjava教程了。这片文章后半部分讲对线程的操作,相信很多人都不太懂。这个项目通过最简单的方式,对Rxjava线程操作的进行讲解,让大家彻底明白Rxjava的核心内容。所以,在学习这个项目前先看扔物线大哥的文章。
RxJava的精妙之处就是异步操作极其方便,也就是Schedulers的使用,本项目可以让大家彻底掌握Schedulers的使用,还有常用的操作符、RxAndroid...的使用详解。就是用最简单移动的方式把Rxjava讲明白.
From 5969c976b5eeba764bc65cbc7d946c7a2f596210 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Maat=E7=BA=A2=E9=A3=9E?=
Date: Sun, 30 Apr 2017 17:02:19 +0800
Subject: [PATCH 14/14] Update README.md
---
README.md | 5 -----
1 file changed, 5 deletions(-)
diff --git a/README.md b/README.md
index f6ec7ad..1fa9c19 100644
--- a/README.md
+++ b/README.md
@@ -3,11 +3,6 @@
RxJava的精妙之处就是异步操作极其方便,也就是Schedulers的使用,本项目可以让大家彻底掌握Schedulers的使用,还有常用的操作符、RxAndroid...的使用详解。就是用最简单移动的方式把Rxjava讲明白.
-## Screenshots
-
-
-
-
## 详解 (Details Explain)
我们可以把Schedulers看作线程控制符,一共五种线程控制符,可以通过这些线程控制符切换不同的线程。以下是五种线程控制符的区别: