fix: 首页卡片数字只在值变化时更新,减少刷新闪烁
之前每次 fetchStatistics 都重新赋值 text,即使值没变也触发重绘 改为先比较再赋值,值相同时不操作 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -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 引用,用于直接填充数据 */
|
||||
|
||||
Reference in New Issue
Block a user