開發中發現:屬於本 App 的通知在通知欄中不斷「一閃一閃」、位置上下抖動,用戶體驗極差。
代碼中設置:
notification.when = System.currentTimeMillis(); // 錯誤寫法
when 字段語義是「事件發生的固定時間戳」。若每次發送通知都用「當前時間」,系統會以最新時間重新排序,導致通知在列表中反覆跳動。
// 方案一:使用常量時間戳(如應用啟動時間)
private static final long APP_START_TIME = System.currentTimeMillis(); // 在 Application.onCreate() 初始化
notification.when = APP_START_TIME;
// 方案二:業務真實事件時間(如消息送達時間、下載開始時間)
notification.when = message.getReceivedTime(); // 真實業務時間
when: "A timestamp related to this notification... Choose a timestamp that will be most relevant to the user."
- 聊天消息 → 消息接收時間;
- 文件下載(進行中) → 下載開始時間;
- 文件下載(完成) → 下載完成時間;
- 即將到來的會議 → 會議開始時間(未來時間);
- 碼表/倒計時 → 開始/結束時間。
Application 初始化記錄 APP_START_TIME,無業務時間時兜底使用;progress/contentText,勿修改 when;setShowWhen(false) 隱藏時間顯示(Android 12+),若 UI 不需時間。一行代碼修復,還用戶安靜有序的通知中心。