1
0
Эх сурвалжийг харах

Interval.life(FragmentActivity)函数改为在onDestroy时停止

drake 3 жил өмнө
parent
commit
57a0a77958

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

@@ -19,6 +19,8 @@
 
 package com.drake.net.time
 
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentActivity
 import androidx.lifecycle.Lifecycle
 import androidx.lifecycle.LifecycleEventObserver
 import androidx.lifecycle.LifecycleOwner
@@ -196,11 +198,9 @@ open class Interval(
 
     //<editor-fold desc="生命周期">
     /**
-     * 绑定生命周期, 在指定生命周期发生时取消轮询器
-     * @param lifecycleOwner 默认在销毁时取消轮询器
-     * @param lifeEvent 销毁的时机, 默认为 ON_STOP 界面停止时停止轮询器
-     *
-     * Fragment的显示/隐藏不会调用onDestroy, 故轮询器默认是在ON_STOP停止, 如果你设置ON_DESTORY请考虑Fragment的情况下
+     * 自动在指定生命周期后取消[cancel]轮询器
+     * @param lifecycleOwner 生命周期持有者, 一般为Activity/Fragment
+     * @param lifeEvent 取消轮询器的时机, 默认为 ON_STOP 界面停止时停止轮询器
      */
     fun life(
         lifecycleOwner: LifecycleOwner,
@@ -214,8 +214,21 @@ open class Interval(
             })
         }
     }
+
+    /**
+     * 自动在指定生命周期后取消[cancel]轮询器
+     * 销毁生命周期为[Lifecycle.Event.ON_DESTROY]
+     */
+    fun life(activity: FragmentActivity) = life(activity, Lifecycle.Event.ON_DESTROY)
+
+    /**
+     * 自动在指定生命周期后取消[cancel]轮询器
+     * 销毁生命周期为[Lifecycle.Event.ON_STOP]. 因为Fragment多数情况下不会触发[Fragment.onDestroy]
+     */
+    fun life(fragment: Fragment) = life(fragment, Lifecycle.Event.ON_STOP)
     //</editor-fold>
 
+    /** 启动轮询器 */
     private fun launch(delay: Long = unit.toMillis(initialDelay)) {
         scope = scope {