drake 2 anos atrás
pai
commit
cb1685e858

+ 1 - 1
net/build.gradle

@@ -48,7 +48,7 @@ android {
 
 dependencies {
     api fileTree(dir: "libs", include: ["*.jar"])
-    implementation "androidx.appcompat:appcompat:1.2.0"
+    implementation 'androidx.appcompat:appcompat:1.3.1'
     implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
     testImplementation "junit:junit:4.13.2"
     androidTestImplementation "androidx.test:runner:1.3.0"

+ 7 - 8
net/src/main/java/com/drake/net/scope/PageCoroutineScope.kt

@@ -16,7 +16,10 @@
 
 package com.drake.net.scope
 
-import android.view.View
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.LifecycleEventObserver
+import androidx.lifecycle.LifecycleOwner
+import androidx.lifecycle.ViewTreeLifecycleOwner
 import com.drake.brv.PageRefreshLayout
 import com.drake.net.NetConfig
 import kotlinx.coroutines.CancellationException
@@ -32,13 +35,9 @@ class PageCoroutineScope(
     val index get() = page.index
 
     init {
-        page.addOnAttachStateChangeListener(object : View.OnAttachStateChangeListener {
-            override fun onViewAttachedToWindow(v: View) {
-
-            }
-
-            override fun onViewDetachedFromWindow(v: View) {
-                cancel()
+        ViewTreeLifecycleOwner.get(page)?.lifecycle?.addObserver(object : LifecycleEventObserver {
+            override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) {
+                if (event == Lifecycle.Event.ON_DESTROY) cancel()
             }
         })
     }

+ 7 - 7
net/src/main/java/com/drake/net/scope/StateCoroutineScope.kt

@@ -16,7 +16,10 @@
 
 package com.drake.net.scope
 
-import android.view.View
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.LifecycleEventObserver
+import androidx.lifecycle.LifecycleOwner
+import androidx.lifecycle.ViewTreeLifecycleOwner
 import com.drake.net.NetConfig
 import com.drake.statelayout.StateLayout
 import kotlinx.coroutines.CancellationException
@@ -32,12 +35,9 @@ class StateCoroutineScope(
 ) : NetCoroutineScope(dispatcher = dispatcher) {
 
     init {
-        state.addOnAttachStateChangeListener(object : View.OnAttachStateChangeListener {
-            override fun onViewAttachedToWindow(v: View?) {
-            }
-
-            override fun onViewDetachedFromWindow(v: View) {
-                cancel()
+        ViewTreeLifecycleOwner.get(state)?.lifecycle?.addObserver(object : LifecycleEventObserver {
+            override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) {
+                if (event == Lifecycle.Event.ON_DESTROY) cancel()
             }
         })
     }

+ 7 - 6
net/src/main/java/com/drake/net/scope/ViewCoroutineScope.kt

@@ -17,6 +17,10 @@
 package com.drake.net.scope
 
 import android.view.View
+import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.LifecycleEventObserver
+import androidx.lifecycle.LifecycleOwner
+import androidx.lifecycle.ViewTreeLifecycleOwner
 import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.Dispatchers
 
@@ -30,12 +34,9 @@ class ViewCoroutineScope(
 ) : NetCoroutineScope(dispatcher = dispatcher) {
 
     init {
-        view.addOnAttachStateChangeListener(object : View.OnAttachStateChangeListener {
-            override fun onViewAttachedToWindow(v: View?) {
-            }
-
-            override fun onViewDetachedFromWindow(v: View) {
-                cancel()
+        ViewTreeLifecycleOwner.get(view)?.lifecycle?.addObserver(object : LifecycleEventObserver {
+            override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) {
+                if (event == Lifecycle.Event.ON_DESTROY) cancel()
             }
         })
     }