From 8ef170051ac38d5b7bc782d734679c9ae9b0e75c Mon Sep 17 00:00:00 2001 From: dongliang Date: Wed, 29 Apr 2026 20:23:10 +0930 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=96=B0=E9=80=9A=E7=9F=A5=E5=88=B0?= =?UTF-8?q?=E6=9D=A5=E6=97=B6=E6=B8=85=E9=99=A4=E4=B8=8A=E4=B8=80=E8=BD=AE?= =?UTF-8?q?acknowledgedCards?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题:用户点了红点卡片→ack=[3],之后新通知的diffStats 也返回changed=[3],被ack过滤→红点不显示。 修复:processMessage中,新通知到来时清除acknowledgedCards。 新通知=新一轮周期,上一轮的"已查看"不应影响新一轮。 Co-Authored-By: Claude Opus 4.6 (1M context) --- .../com/xiaoqu/watch/service/manager/NotificationManager.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/java/com/xiaoqu/watch/service/manager/NotificationManager.kt b/app/src/main/java/com/xiaoqu/watch/service/manager/NotificationManager.kt index c069f9f..0331d4a 100644 --- a/app/src/main/java/com/xiaoqu/watch/service/manager/NotificationManager.kt +++ b/app/src/main/java/com/xiaoqu/watch/service/manager/NotificationManager.kt @@ -120,6 +120,12 @@ class NotificationManager @Inject constructor( val taskIds = parseTaskIds(rawJson) if (taskIds.isEmpty()) return + // 新通知到来 → 清除上一轮的已查看记录(新一轮通知周期开始) + if (acknowledgedCards.isNotEmpty()) { + Timber.d("通知: 新通知到来,清除上一轮 ack=${acknowledgedCards}") + acknowledgedCards.clear() + } + // 保存通知到达前的统计快照(只在首次通知时保存,后续累积不覆盖) if (preNotificationStats == null) { preNotificationStats = lastStats?.copy()