Coverage Summary for Class: LayoutLifecycleCoordinator (kr.open.library.simple_ui.xml.ui.layout.base.lifecycle)
| Class |
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| LayoutLifecycleCoordinator |
100%
(3/3)
|
|
100%
(12/12)
|
100%
(33/33)
|
| LayoutLifecycleCoordinator$retry$1 |
100%
(2/2)
|
|
100%
(2/2)
|
100%
(6/6)
|
| Total |
100%
(5/5)
|
|
100%
(14/14)
|
100%
(39/39)
|
package kr.open.library.simple_ui.xml.ui.layout.base.lifecycle
import android.view.View
import androidx.lifecycle.LifecycleOwner
import kr.open.library.simple_ui.xml.ui.layout.base.bind.retry.LayoutLifecycleBindRetry
import kr.open.library.simple_ui.xml.ui.layout.base.bind.retry.LayoutLifecycleBindRetryCallbacks
/**
* Coordinates lifecycle observer binding for views.<br><br>
* 뷰의 라이프사이클 옵저버 바인딩을 조정합니다.<br>
*
* @param view The target view used for retry scheduling and attach checks.<br><br>
* 재시도 스케줄링과 attach 확인에 사용하는 대상 View입니다.<br>
* @param callbacks Callback interface that binds and unbinds lifecycle observers.<br><br>
* 라이프사이클 옵저버를 바인딩/해제하는 콜백 인터페이스입니다.<br>
* @param maxRetry Maximum number of delayed retry attempts.<br><br>
* 지연 재시도 최대 횟수입니다.<br>
* @param retryDelayMs Delay in milliseconds between retry attempts.<br><br>
* 재시도 간 지연 시간(ms)입니다.<br>
*/
internal class LayoutLifecycleCoordinator(
private val view: View,
private val callbacks: LayoutLifecycleCallbacks,
maxRetry: Int = 3,
retryDelayMs: Long = 50L,
) {
private val retry = LayoutLifecycleBindRetry(
view = view,
callbacks = object : LayoutLifecycleBindRetryCallbacks {
override fun bind(): LifecycleOwner? = callbacks.bindLifecycle()
},
maxRetry = maxRetry,
retryDelayMs = retryDelayMs,
)
/**
* Starts lifecycle binding with retry support on attach.<br><br>
* attach 시 재시도 지원과 함께 라이프사이클 바인딩을 시작합니다.<br>
*/
fun onAttach() {
retry.start()
}
/**
* Cancels retries and unbinds lifecycle observers on detach.<br><br>
* detach 시 재시도를 취소하고 라이프사이클 옵저버를 해제합니다.<br>
*/
fun onDetach() {
retry.cancel()
callbacks.unbindLifecycle()
}
}