浏览代码

fix: Interval.onlyResumed 结束轮询

drake 2 年之前
父节点
当前提交
3bcae4a13c
共有 1 个文件被更改,包括 6 次插入5 次删除
  1. 6 5
      net/src/main/java/com/drake/net/time/Interval.kt

+ 6 - 5
net/src/main/java/com/drake/net/time/Interval.kt

@@ -234,16 +234,17 @@ open class Interval @JvmOverloads constructor(
     }
 
     /**
-     *  当界面不可见时暂停[pause], 当界面可见时继续[resume]. 不会自动[start]轮询器
+     *  当界面不可见时暂停[pause], 当界面可见时继续[resume], 当界面销毁时[cancel]轮询器
      */
     fun onlyResumed(lifecycleOwner: LifecycleOwner) = apply {
         runMain {
             lifecycleOwner.lifecycle.addObserver(object : LifecycleEventObserver {
                 override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) {
-                    if (event == Lifecycle.Event.ON_RESUME) {
-                        resume()
-                    } else if (event == Lifecycle.Event.ON_PAUSE) {
-                        pause()
+                    when (event) {
+                        Lifecycle.Event.ON_RESUME -> resume()
+                        Lifecycle.Event.ON_PAUSE -> pause()
+                        Lifecycle.Event.ON_DESTROY -> cancel()
+                        else -> {}
                     }
                 }
             })