小游戏运行机制
小游戏在启动、运行以及销毁过程中遵循特定的状态切换逻辑。
前台与后台状态
- 前台状态:小游戏启动后,界面被展示给用户。
- 后台状态:当用户点击右上角胶囊按钮关闭小游戏,或者按了设备 Home 键离开平台时,小游戏并没有完全终止运行,而是进入了后台状态。
- 运行限制:进入后台后,小游戏还可以维持一小段时间的运行。
启动方式
根据小游戏是否已被销毁,启动分为两种情况:
| 启动方式 | 定义与说明 |
|---|---|
| 冷启动 (Cold Start) | 用户首次打开,或小游戏销毁后被用户再次打开,此时需要重新加载启动。 |
| 热启动 (Hot Start) | 用户已经打开过某小游戏,在一定时间内再次打开,小游戏从后台进入前台。 |
销毁时机
小游戏不会一直驻留在内存中,以下情况会被销毁:
- 长时间后台停留:进入后台一定时间后仍未被打开。
- 系统资源回收:当系统内存紧张或小游戏占用资源过高时。
- iOS 内存告警:在 iOS 上,若连续收到系统内存告警,会主动销毁小游戏。
优化建议:开发者应使用 sud.onMemoryWarning 监听内存告警事件,并在必要时主动进行内存清理。
再次打开的逻辑规则
用户打开小游戏的预期有以下两类场景:
场景分类
- 场景 A:打开首页,场景值有以下几项:
| 场景类型 | 说明 |
|---|---|
| 1 | 小游戏主入口 |
| 2 | 安卓系统桌面图标 |
| 3 | 从另一个小游戏返回 |
- 场景 B:打开小游戏指定的某个页面,场景值为除 场景A 以外的其他 当再次打开一个小游戏逻辑如下:
| 上一次场景 | 当前打开场景 | 最终表现 |
|---|---|---|
| 场景 A | 场景 A | 保留原来的状态(继续上次进度) |
| 场景 B | 场景 A | 清空页面栈,重新打开首页 (reStart) |
| 场景 A 或 B | 场景 B | 清空页面栈,打开指定页面 (reStart) |
