diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 303d332..4d6f1d6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -15,7 +15,7 @@
@@ -23,6 +23,14 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/navinfo/testapplication/MainActivity.kt b/app/src/main/java/com/navinfo/MainActivity.kt
similarity index 72%
rename from app/src/main/java/com/navinfo/testapplication/MainActivity.kt
rename to app/src/main/java/com/navinfo/MainActivity.kt
index f3a67f9..a782734 100644
--- a/app/src/main/java/com/navinfo/testapplication/MainActivity.kt
+++ b/app/src/main/java/com/navinfo/MainActivity.kt
@@ -1,14 +1,12 @@
-package com.navinfo.testapplication
+package com.navinfo
+import android.content.Intent
import android.os.Bundle
import android.os.PersistableBundle
import android.util.Log
import android.view.LayoutInflater
import androidx.appcompat.app.AppCompatActivity
import com.navinfo.testapplication.databinding.ActivityMainBinding
-import io.reactivex.Observable
-import io.reactivex.ObservableEmitter
-import io.reactivex.ObservableOnSubscribe
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.async
import kotlinx.coroutines.launch
@@ -22,16 +20,9 @@ class MainActivity : AppCompatActivity {
override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
super.onCreate(savedInstanceState, persistentState)
val listData = 1..20
- // 最简单的RxJava示例
- mainBinding.btnRxjava1.setOnClickListener {
- Observable.create{
- for (i in listData) {
- it.onNext(i.toString())
- }
- it.onComplete()
- }.subscribe {
- println(it)
- }
+ // 最简单的协程
+ mainBinding.btnStartRxjava.setOnClickListener {
+ startActivity(Intent(this@MainActivity, RxAndroidActivity::class.java))
}
mainBinding.btnStartCoroutine.setOnClickListener {
diff --git a/app/src/main/java/com/navinfo/testapplication/RxAndroidActivity.java b/app/src/main/java/com/navinfo/RxAndroidActivity.java
similarity index 91%
rename from app/src/main/java/com/navinfo/testapplication/RxAndroidActivity.java
rename to app/src/main/java/com/navinfo/RxAndroidActivity.java
index aef46e2..4a21f5c 100644
--- a/app/src/main/java/com/navinfo/testapplication/RxAndroidActivity.java
+++ b/app/src/main/java/com/navinfo/RxAndroidActivity.java
@@ -1,4 +1,4 @@
-package com.navinfo.testapplication;
+package com.navinfo;
import android.os.Bundle;
import android.util.Log;
@@ -38,7 +38,6 @@ public class RxAndroidActivity extends AppCompatActivity {
// RxAndroid测试需要使用的数据
private List listData = new ArrayList<>();
private Disposable disposable;
- private Subscription subscription;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -304,19 +303,20 @@ public class RxAndroidActivity extends AppCompatActivity {
Flowable.create(new FlowableOnSubscribe() {
@Override
public void subscribe(FlowableEmitter emitter) throws Exception {
+ RxAndroidActivity.this.emitter = emitter;
int i = 1;
while (true) {
- if (emitter.requested()>0) {
- Log.d(TAG, "前requested:"+emitter.requested());
- emitter.onNext((i++)+"");
- Log.d(TAG, "后requested:"+emitter.requested());
- Log.d(TAG, "背压发送数据:"+i+",当前的requested:"+emitter.requested());
- } else {
- Thread.sleep(1000);
+ if (!emitter.isCancelled()) {
+ if (emitter.requested()>0) {
+ Log.d(TAG, "前requested:"+emitter.requested());
+ emitter.onNext((i++)+"");
+ Log.d(TAG, "背压发送数据:"+i+",当前的requested:"+emitter.requested());
+ }
}
}
}
}, BackpressureStrategy.BUFFER)
+ .subscribeOn(Schedulers.io())
.observeOn(Schedulers.computation())
.subscribe(new FlowableSubscriber() {
@Override
@@ -327,12 +327,14 @@ public class RxAndroidActivity extends AppCompatActivity {
@Override
public void onNext(String s) {
- try {
- Thread.sleep(100);
- Log.d(TAG, "OnNext:"+s);
- subscription.request(1);
- } catch (InterruptedException e) {
- e.printStackTrace();
+ if (!emitter.isCancelled()) {
+ try {
+ subscription.request(1);
+ Thread.sleep(100);
+ Log.d(TAG, "OnNext:"+s);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
}
}
@@ -343,10 +345,21 @@ public class RxAndroidActivity extends AppCompatActivity {
@Override
public void onComplete() {
-
+ Log.d(TAG, "onComplete:");
}
});
}
});
+
+ binding.rxSimple6.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ if (subscription!=null) {
+ subscription.cancel();
+ }
+ }
+ });
}
+ private Subscription subscription;
+ private FlowableEmitter emitter;
}
diff --git a/app/src/main/java/com/navinfo/testapplication/RxCoroutineActivity.kt b/app/src/main/java/com/navinfo/testapplication/RxCoroutineActivity.kt
new file mode 100644
index 0000000..462d54b
--- /dev/null
+++ b/app/src/main/java/com/navinfo/testapplication/RxCoroutineActivity.kt
@@ -0,0 +1,21 @@
+package com.navinfo.testapplication
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import androidx.appcompat.app.AppCompatActivity
+import com.navinfo.testapplication.databinding.ActivityCoroutineBinding
+
+class RxCoroutineActivity: AppCompatActivity() {
+ private val binding by lazy {
+ ActivityCoroutineBinding.inflate(LayoutInflater.from(this));
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(binding.root)
+
+ // 最简单的协程测试
+ binding.coroutineSimple1.setOnClickListener {
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_coroutine.xml b/app/src/main/res/layout/activity_coroutine.xml
new file mode 100644
index 0000000..8f08c25
--- /dev/null
+++ b/app/src/main/res/layout/activity_coroutine.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index fc06d0b..619bac5 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -5,24 +5,24 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
- tools:context=".MainActivity">
+ tools:context="com.navinfo.MainActivity">
-
+ android:text="RxJava测试界面">
+ style="@style/Widget.AppCompat.Button.Colored"
+ android:text="协程测试界面">
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_rxandroid.xml b/app/src/main/res/layout/activity_rxandroid.xml
index 03fc168..ffed7c6 100644
--- a/app/src/main/res/layout/activity_rxandroid.xml
+++ b/app/src/main/res/layout/activity_rxandroid.xml
@@ -37,5 +37,11 @@
android:layout_height="wrap_content"
android:text="背压">
+
+
\ No newline at end of file