refactor(face): 重构倒计时工具,统一使用 CountDownUtil 实例化方案

- CountDownUtil 由 object 单例改为 class,各调用方持有独立实例,互不干扰
- 修复 onCompletion 取消时误触发 onFinish 的 bug
- LoginByFaceActivity 新增 recognizeCountDownUtil / leftCountDownUtil 两个实例
- 移除 CountDownManager 及其所有调用,消除两套倒计时并存的混乱

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-06 15:50:36 +08:00
co-authored by Claude Sonnet 4.6
parent f99538890c
commit 0a110020b9
3 changed files with 46 additions and 192 deletions
@@ -49,7 +49,6 @@ import com.sw.platecabinet.ext.visible
import com.sw.platecabinet.model.response.EquipmentUserInfo
import com.sw.platecabinet.model.response.UserFaceModel
import com.sw.platecabinet.utils.BitmapSaver
import com.sw.platecabinet.utils.CountDownManager
import com.sw.platecabinet.utils.CountDownUtil
import com.sw.platecabinet.utils.Debouncer
import com.sw.platecabinet.utils.LogFileUtil
@@ -169,6 +168,12 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
private val leftDebouncer = Debouncer(30 * 1000)
/** 识别超时倒计时(15秒无操作跳回初始页) */
private val recognizeCountDownUtil = CountDownUtil()
/** 用户离开画面后的倒计时(llCollectButton 显示状态下无人脸时触发) */
private val leftCountDownUtil = CountDownUtil()
private var registerHandler: RegisterCallbackHandler? = null
private fun isFitData(userFaceInfo: UserFaceInfo?): Boolean {
@@ -331,7 +336,7 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
}
private fun recognizeFail() {
CountDownManager.cancelCountDown()
recognizeCountDownUtil.cancelCountDown()
binding.tvToInit.text = ""
binding.tvSimilarValue.text = ""
binding.llCollectButton.visible()
@@ -389,7 +394,7 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
PlateUtils.open(this, item.equipmentBoxCode, false) {
goInitActivity()
}
CountDownManager.cancelCountDown()
recognizeCountDownUtil.cancelCountDown()
}
currentPlateInfo = item
MyApp.plateList = items
@@ -699,8 +704,9 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
resumeCamera()
registerHandler = RegisterCallbackHandler()
CountDownManager.startCountDown(
totalSeconds = 15,
recognizeCountDownUtil.startCountDown(
total = 15,
lifecycleScope = lifecycleScope,
onTick = { remaining ->
loadLogInfo("resetRecognizeState剩余时间:$remaining")
if (judgeRecognizeState()) return@startCountDown
@@ -725,7 +731,7 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
override fun onPause() {
pauseCamera()
super.onPause()
CountDownManager.cancelCountDown()
recognizeCountDownUtil.cancelCountDown()
}
private fun pauseCamera() {
@@ -883,19 +889,18 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
private var isCollectFace = false
private fun leftCountDown() {
CountDownUtil.startCountDown(total = 15, lifecycleScope = lifecycleScope, onStart = {
leftCountDownUtil.startCountDown(total = 15, lifecycleScope = lifecycleScope, onStart = {
loadLogInfo("onPreview-----------leftCountDown-------------")
}, onTick = {
loadLogInfo("leftCountDown.onTick:$it")
if (facePreviewInfoList.isNullOrEmpty().not()) {
loadLogInfo("leftCountDown.onTick-cancel()")
CountDownUtil.cancelCountDown()
leftCountDownUtil.cancelCountDown()
return@startCountDown
}
}, onFinish = {
CountDownUtil.cancelCountDown()
if (facePreviewInfoList.isNullOrEmpty().not()) {
loadLogInfo("leftCountDown.onFinish-cancel()")
loadLogInfo("leftCountDown.onFinish-人脸未离开,不跳转")
return@startCountDown
}
goInitActivity()