背景
Cat Daddy Games 是一家位于华盛顿州柯克兰的 2K 全资工作室,也是 NBA 2K Mobile 的开发者。该团队希望提高游戏的整体质量和稳定性,特别是通过减少“应用无响应”错误 (ANR)。当 Android 应用的 UI 线程被阻塞时间过长时,就会发生 ANR。此时,负责更新 UI 的应用主线程无法绘制或处理用户输入事件,导致用户感到沮丧。如果应用在前台运行,系统会显示一个对话框,允许用户强制退出应用。
他们做了什么
减少 ANR 一直是 Cat Daddy 的一项高优先级任务。质量保证团队不懈努力,找出了一个常见的 ANR 模式:他们发现,当应用暂停然后迅速恢复时,大量的触摸输入可能会导致 ANR。通过 Firebase Crashlytics 的进一步调查显示,此 ANR 的类型为 android.os.MessageQueue.nativePollOnce,这是 NBA 2K Mobile 最常见的 ANR 类型。
Cat Daddy 还发现 GameActivity 中改进的输入处理可以避免此类 ANR,因此他们决定迁移到 GameActivity。
GameActivity 是 Android 游戏开发套件的一个组件,旨在协助 Android 游戏在应用的 C/C++ 代码中处理应用生命周期命令、输入事件和文本输入。与 NativeActivity
相比,GameActivity 提供了许多以游戏为重点的改进,例如 Fragment
、渲染到 SurfaceView
,以及对其他流行游戏开发相关库的支持。
GameActivity 还在其输入缓冲区中使用双缓冲,使游戏能够更好地处理高输入量的情况。
结果
通过实施 GameActivity,Cat Daddy 显著改进了游戏的输入处理,使 ANR 错误减少了 35%。这改善了用户体验并创造了更稳定的游戏体验。
作为额外的好处,由于 GameActivity 继承自 FragmentActivity
,CatDaddy 还能够集成 EmbeddedWebView 和 EmbeddedVideoView,这些是某些最受欢迎的社交游戏集成所必需的。
开始使用
使用 GameActivity 和 Android 游戏开发套件的其他组件来改善您自己的游戏体验。