Skip to content

fix(Message): 修复 Android 页面后退重进卡死 - #4603

Open
SC123667 wants to merge 1 commit into
Tencent:developfrom
SC123667:codex/fix-android-message-reentry-3576
Open

fix(Message): 修复 Android 页面后退重进卡死#4603
SC123667 wants to merge 1 commit into
Tencent:developfrom
SC123667:codex/fix-android-message-reentry-3576

Conversation

@SC123667

Copy link
Copy Markdown

🤔 这个 PR 的性质是?

  • 日常 bug 修复
  • 新特性提交
  • 文档改进
  • 演示代码改进
  • 组件样式/交互改进
  • CI/CD 改进
  • 重构
  • 代码风格优化
  • 测试用例
  • 分支合并
  • 其他

🔗 相关 Issue

Closes #3576

💡 需求背景和解决方案

Android 部分机型在 Message 尚未自动关闭时返回上一页,随后重新进入页面,可能出现页面卡死。

根因有两处:

  1. MessageItem 销毁时只清理跑马灯动画定时器,未清理 duration 自动关闭定时器,导致已销毁实例仍可能收到异步回调。
  2. Message.hideAll() 遍历可变实例数组时不递增下标,依赖每个子实例在 hide 回调中同步移除自身;页面切换时遇到失效或尚未完成初始化的实例会反复调用同一实例,阻塞主线程。

本 PR:

  • 在 MessageItem detached 生命周期中统一重置动画和自动关闭定时器;
  • 在异步初始化前绑定 onHide,并只记录成功获取的子实例;
  • 基于实例快照执行 hideAll,保证每个实例最多处理一次;
  • 补充页面销毁清理定时器及异常实例有限遍历的回归测试。

✅ 验证

  • pnpm exec prettier --check:通过
  • pnpm run lint:通过
  • pnpm run build:dist:通过
  • Jest 全量单测:138 个套件、790 个测试、397 个快照全部通过

📝 更新日志

  • 本条 PR 不需要纳入 Changelog

tdesign-miniprogram

  • fix(Message): 修复 Android 页面后退重进时可能卡死的问题

@tdesign/uniapp

@tdesign/uniapp-chat

☑️ 请求合并前的自查清单

  • 文档已补充或无须补充
  • 代码演示已提供或无须提供
  • TypeScript 定义已补充或无须补充
  • Changelog 已提供或无须提供

@SC123667
SC123667 marked this pull request as ready for review August 11, 2026 08:22
@pkg-pr-new

pkg-pr-new Bot commented Aug 11, 2026

Copy link
Copy Markdown

Open in StackBlitz

npm i https://pkg.pr.new/tdesign-miniprogram@4603
npm i https://pkg.pr.new/@tdesign/uniapp@4603
npm i https://pkg.pr.new/@tdesign/uniapp-chat@4603

commit: cfa4702

@tdesign-bot

Copy link
Copy Markdown
Collaborator

TDesign Component Site Preview Open

Component Preview
tdesign-miniprogram 完成
@tdesign-miniprogram/chat 完成
tdesign-uniapp 完成
tdesign-uniapp-chat 完成

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[message] message显示后不关闭的情况,后退一页,再进入此页面,小程序卡死。

2 participants