|
@@ -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()
|
|
|
}
|
|
|
})
|
|
|
}
|