2K 通过 Android 游戏开发套件将 ANR 发生率降低 35%

背景

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。

GameActivityAndroid 游戏开发套件的一个组件,旨在协助 Android 游戏在应用的 C/C++ 代码中处理应用生命周期命令、输入事件和文本输入。与 NativeActivity 相比,GameActivity 提供了许多以游戏为重点的改进,例如 Fragment、渲染到 SurfaceView,以及对其他流行游戏开发相关库的支持。

GameActivity 还在其输入缓冲区中使用双缓冲,使游戏能够更好地处理高输入量的情况。

结果

通过实施 GameActivity,Cat Daddy 显著改进了游戏的输入处理,使 ANR 错误减少了 35%。这改善了用户体验并创造了更稳定的游戏体验。

作为额外的好处,由于 GameActivity 继承自 FragmentActivity,CatDaddy 还能够集成 EmbeddedWebView 和 EmbeddedVideoView,这些是某些最受欢迎的社交游戏集成所必需的。

开始使用

使用 GameActivityAndroid 游戏开发套件的其他组件来改善您自己的游戏体验。