设计:确认 M5 大厅/子游戏双 Web 激活模型(用户约束)

用户明确:大厅 Web 常驻、子游戏 Web 进入创建/返回销毁(不保活);同时只一个激活(联网+收发包+界面更新),
非激活端 onInactive 彻底停网络+渲染;仅 大厅↔子游戏、无子游戏→子游戏;两 Web 各自独立桥+能力。

- 框架 §7.1:子游戏切换加"双 Web 激活模型"铁律块;M2/M4 单 WebView loadUrl 标为过渡实现
- 框架 §9:Web 保活/预热行改为双 Web 槽 + onActive/onInactive 模型
- 01_WBS:T-M5-01/02 重写为双 Web 槽(大厅常驻保活 + 子游戏临时 + 仅一个激活 + 各自独立桥),估时上调
- 记入项目记忆 m5-dual-web-activation-model
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
lanterngamescn
2026-06-25 21:49:45 +08:00
parent 6bec98d584
commit d196b13e39
2 changed files with 12 additions and 4 deletions
+2 -2
View File
@@ -208,8 +208,8 @@
| ID | 目标 | 产出物 | 依赖 | 验收 | 估时 | 角色 |
|---|---|---|---|---|---|---|
| **T-M5-01** | Web 保活/预热 | `NodeController`+`BuilderNode` 离屏预创建/保活;启动期预热空 Web | T-M2-10 | 子游戏切换 <300ms、无白屏 | 2 | 桥 |
| **T-M5-02** | 切换与桥重绑 | 子游戏切换走 `loadUrl` 复用;切换后桥/handler 重绑时序正确 | T-M5-01 | 切换后桥功能正常 | 1 | 桥 |
| **T-M5-01** | Web 保活/预热(**双 Web 槽**模型,框架 §7.1/§9 确认)| 大厅 Web 常驻(`NodeController`/`BuilderNode` 离屏保活);子游戏 Web 进入创建/返回销毁;**同时只一个激活**:进子游戏大厅 `onInactive()` 停网络+渲染、返回 `onActive()` 恢复并销毁子游戏 Web;各 Web 独立桥+能力;无子游戏→子游戏 | T-M2-10 | 子游戏切换 <300ms、无白屏、返回保留大厅状态/连接、非激活端不占网络 | 3 | 桥 |
| **T-M5-02** | 切换与桥重绑 | 子游戏 Web 创建即注册自己的桥+能力;销毁时 dispose;大厅桥常驻不重绑。替换 M2/M4 的单 WebView loadUrl 切换 | T-M5-01 | 切换后两端桥功能各自正常、无泄漏 | 1.5 | 桥 |
| **T-M5-03** | 高频节流/批处理 | 定位/电量等高频 handler 节流;出站批处理 | T-M3-* | 跨引擎调用次数下降、无卡顿 | 1 | 桥 |
| **T-M5-04** | 崩溃兜底/内存 | `onRenderExited` 重载;`aboutToDisappear` 彻底清理 | T-M2-10 | 渲染子进程崩溃可自恢复 | 1 | 桥 |
| **T-M5-05** | 安全加固 | WebDebug 按 `isDebug` 守卫;密钥下沉服务端;明文 HTTP 域名白名单;file 跨域最小授权;自定义 scheme 注册(module.json5);日志脱敏 | 各能力就绪 | 安全审查清单(附录 B)全过 | 2 | 桥/台 |