fix: 首页卡片数字只在值变化时更新,减少刷新闪烁

之前每次 fetchStatistics 都重新赋值 text,即使值没变也触发重绘
改为先比较再赋值,值相同时不操作

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
dongliang
2026-05-07 17:07:51 +09:30
parent ea72c2aab0
commit e67100ba83

View File

@@ -130,9 +130,9 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
val result = safeApiCall { taskApi.getStatistics() }
if (result is ApiResult.Success && result.data != null) {
val data = result.data
tvPoolNum.text = data.waitForTask.toString()
tvPunchNum.text = data.treatTask.toString()
tvCompleteNum.text = data.incompleteTask.toString()
updateCardNum(tvPoolNum, data.waitForTask)
updateCardNum(tvPunchNum, data.treatTask)
updateCardNum(tvCompleteNum, data.incompleteTask)
notificationManager.lastStats = data
Timber.d("首页: lastStats 基准已设置 ${data}")
}
@@ -404,14 +404,22 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
notificationManager.lastStats = data
}
// 更新数字
tvPoolNum.text = data.waitForTask.toString()
tvPunchNum.text = data.treatTask.toString()
tvCompleteNum.text = data.incompleteTask.toString()
// 只在值变化时更新数字(避免刷新闪烁)
updateCardNum(tvPoolNum, data.waitForTask)
updateCardNum(tvPunchNum, data.treatTask)
updateCardNum(tvCompleteNum, data.incompleteTask)
}
}
}
/** 数字有变化时才更新 TextView避免重复赋值导致闪烁 */
private fun updateCardNum(tv: android.widget.TextView, value: Int) {
val newText = value.toString()
if (tv.text.toString() != newText) {
tv.text = newText
}
}
// ===== 设置页 =====
/** 保存 configPage 引用,用于直接填充数据 */