Browse Source

- 解决state() bug
- 增加Observer异步扩展函数

drake 5 years ago
parent
commit
aa748cd341

+ 1 - 1
README.md

@@ -54,7 +54,7 @@ allprojects {
 module 的 build.gradle
 
 ```groovy
-implementation 'com.github.liangjingkanji:Net:1.2.5'
+implementation 'com.github.liangjingkanji:Net:1.2.6'
 ```
 
 

+ 1 - 1
net/build.gradle

@@ -41,7 +41,7 @@ dependencies {
     api 'com.yanzhenjie:okalle:0.1.7'
 
     compileOnly 'androidx.appcompat:appcompat:1.1.0'
-    compileOnly 'com.github.liangjingkanji:BRV:1.1.2'
+    compileOnly 'com.github.liangjingkanji:BRV:1.1.4'
     compileOnly 'com.github.bumptech.glide:glide:4.9.0'
 
     compileOnly 'io.reactivex.rxjava2:rxkotlin:2.3.0'

+ 5 - 5
net/src/main/java/com/drake/net/Net.kt

@@ -63,7 +63,7 @@ inline fun <reified M> get(
                 it.onError(e)
             }
         }
-    }.onTerminateDetach().subscribeOn(Schedulers.computation())
+    }.onTerminateDetach().subscribeOn(Schedulers.io())
         .observeOn(AndroidSchedulers.mainThread())
 }
 
@@ -107,7 +107,7 @@ inline fun <reified M> post(
                 it.onError(e)
             }
         }
-    }.onTerminateDetach().subscribeOn(Schedulers.computation())
+    }.onTerminateDetach().subscribeOn(Schedulers.io())
         .observeOn(AndroidSchedulers.mainThread())
 }
 
@@ -152,7 +152,7 @@ fun download(
                 it.onError(e)
             }
         }
-    }.onTerminateDetach().subscribeOn(Schedulers.computation())
+    }.onTerminateDetach().subscribeOn(Schedulers.io())
         .observeOn(AndroidSchedulers.mainThread())
 }
 
@@ -189,7 +189,7 @@ fun Context.downloadImg(url: String, with: Int = -1, height: Int = -1): Observab
             if (!it.isDisposed) it.onError(e)
         }
 
-    }.subscribeOn(Schedulers.computation()).observeOn(AndroidSchedulers.mainThread())
+    }.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
 }
 
 // </editor-fold>
@@ -320,7 +320,7 @@ fun Context.syncDownloadImg(url: String, with: Int = 0, height: Int = 0): Observ
             }
         }
 
-    }.subscribeOn(Schedulers.computation()).observeOn(AndroidSchedulers.mainThread())
+    }.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
 }
 
 // </editor-fold>

+ 41 - 1
net/src/main/java/com/drake/net/observer/ObserverUtils.kt

@@ -15,6 +15,8 @@ import androidx.lifecycle.LifecycleOwner
 import com.drake.brv.PageRefreshLayout
 import com.drake.statelayout.StateLayout
 import io.reactivex.Observable
+import io.reactivex.android.schedulers.AndroidSchedulers
+import io.reactivex.schedulers.Schedulers
 
 
 /**
@@ -36,6 +38,8 @@ fun <M> Observable<M>.net(
     return observer
 }
 
+// <editor-fold desc="缺省页">
+
 /**
  * 自动处理多状态页面
  * @receiver Observable<M>
@@ -82,6 +86,7 @@ fun <M> Observable<M>.state(
 }
 
 fun <M> Observable<M>.state(fragment: Fragment, block: StateObserver<M>.(M) -> Unit = {}) {
+
     subscribe(object : StateObserver<M>(fragment) {
         override fun onNext(it: M) {
             block(it)
@@ -89,6 +94,11 @@ fun <M> Observable<M>.state(fragment: Fragment, block: StateObserver<M>.(M) -> U
     })
 }
 
+// </editor-fold>
+
+
+// <editor-fold desc="加载框">
+
 /**
  * 请求网络自动开启和关闭对话框
  * @receiver Observable<M>
@@ -127,6 +137,8 @@ fun <M> Observable<M>.dialog(
     return observer
 }
 
+// </editor-fold>
+
 /**
  * 自动结束下拉加载
  * @receiver Observable<M>
@@ -166,4 +178,32 @@ fun <M> Observable<M>.page(
     }
     subscribe(observer)
     return observer
-}
+}
+
+// <editor-fold desc="线程">
+
+fun <M> Observable<M>.async(): Observable<M> {
+    return subscribeOn(Schedulers.computation()).observeOn(AndroidSchedulers.mainThread())
+}
+
+fun <M> Observable<M>.computation(): Observable<M> {
+    return subscribeOn(Schedulers.computation())
+}
+
+fun <M> Observable<M>.io(): Observable<M> {
+    return subscribeOn(Schedulers.io())
+}
+
+fun <M> Observable<M>.single(): Observable<M> {
+    return subscribeOn(Schedulers.single())
+}
+
+fun <M> Observable<M>.newThread(): Observable<M> {
+    return subscribeOn(Schedulers.newThread())
+}
+
+fun <M> Observable<M>.main(): Observable<M> {
+    return observeOn(AndroidSchedulers.mainThread())
+}
+
+// </editor-fold>

+ 1 - 2
net/src/main/java/com/drake/net/observer/StateObserver.kt

@@ -41,8 +41,7 @@ abstract class StateObserver<M> : DisposableObserver<M> {
         this.state = stateLayout
     }
 
-    public override fun onStart() {
-        state.showLoading()
+    override fun onStart() {
         state.addOnAttachStateChangeListener(object : OnAttachStateChangeListener {
             override fun onViewAttachedToWindow(v: View?) {
             }