本文换成 Unity 游戏的视角:切后台、来电、拉起支付、进程被杀,这些情况在 Unity 里会表现成什么,又会影响存档、体力、网络、对局、支付、广告、热更新中的哪些环节。代码只保留关键片段,重点放在处理思路上。一、先看清 Unity 游戏在 Android 上的结构1. 一个 Activity,两条线程Unity 导出的 Android 工程有以下几个特点:通常只有一个 Activity:UnityPlayerActivity。Unity 2023 起也可以选择基于 GameActivity 的版本。所有界面都在这一个 Activity 里由引擎绘制,所以"页面跳转导致的生命周期变化"很少,主要是整个游戏的前后台切换;两条线程:Android 的生命周期回调发生在 Java 的 UI 线程,C# 脚本运行在 Unity 主线程。引擎负责把系统事件转发过来,所以OnApplicationPause等回调比 Java 层的onPause稍晚执行;配置变更默认不重建:Unity 在清单中声明了大量configChanges,旋转屏幕、折叠屏展开、键盘弹出都不会销毁 Activity,由引擎自己处理分辨率变化。
阅读完成 · 觉得有帮助?