From e67100ba839399e7982c654312917255df341d6f Mon Sep 17 00:00:00 2001 From: dongliang Date: Thu, 7 May 2026 17:07:51 +0930 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=A6=96=E9=A1=B5=E5=8D=A1=E7=89=87?= =?UTF-8?q?=E6=95=B0=E5=AD=97=E5=8F=AA=E5=9C=A8=E5=80=BC=E5=8F=98=E5=8C=96?= =?UTF-8?q?=E6=97=B6=E6=9B=B4=E6=96=B0=EF=BC=8C=E5=87=8F=E5=B0=91=E5=88=B7?= =?UTF-8?q?=E6=96=B0=E9=97=AA=E7=83=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 之前每次 fetchStatistics 都重新赋值 text,即使值没变也触发重绘 改为先比较再赋值,值相同时不操作 Co-Authored-By: Claude Opus 4.6 (1M context) --- .../com/xiaoqu/watch/ui/home/HomeFragment.kt | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/xiaoqu/watch/ui/home/HomeFragment.kt b/app/src/main/java/com/xiaoqu/watch/ui/home/HomeFragment.kt index 9f11c71..c157ab3 100644 --- a/app/src/main/java/com/xiaoqu/watch/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/xiaoqu/watch/ui/home/HomeFragment.kt @@ -130,9 +130,9 @@ class HomeFragment : BaseFragment() { 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() { 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 引用,用于直接填充数据 */