2K 利用 Android Game Development Kit 将 ANR 发生率降低了 35%

背景

Cat Daddy Games 是一家全资 2K 工作室,位于华盛顿州柯克兰,是 NBA 2K Mobile 的开发者。该团队希望提高游戏的整体质量和稳定性,具体方法是减少“应用无响应”错误 (ANR)。如果 Android 应用的界面线程处于阻塞状态的时间过长,就会发生 ANR。发生这种情况时,负责更新界面的应用主线程将无法绘制或处理用户输入事件,这会引起用户的不满。如果应用在前台运行,系统会显示一个对话框,允许用户强制退出应用。

策略

减少 ANR 一直是 Cat Daddy 的首要任务。QA 团队坚持不懈,最终确定了一种常见的 ANR 模式:他们发现,当应用暂停然后快速恢复时,大量触控输入可能会导致 ANR。我们对 Firebase Crashlytics 进行的进一步调查表明,此 ANR 的类型为 android.os.MessageQueue.nativePollOnce,这是 NBA 2K Mobile 中最常见的 ANR 类型。

Cat Daddy 还发现 GameActivity 中经过改进的输入处理功能可以避免此类 ANR,因此他们决定改用 GameActivity。

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

GameActivity 还在其输入缓冲区中使用双重缓冲,从而使游戏可以更好地处理这种高输入量的情况。

成果

通过实现 GameActivity,Cat Daddy 显著提升了游戏的输入处理能力,从而使 ANR 错误减少了 35%。这改善了用户体验并打造了更稳定的游戏体验。

此外,由于 GameActivity 继承自 FragmentActivity,因此 CatDaddy 还能够集成 EmbeddedWebView 和 EmbeddedVideoView,而这是一些最热门的社交游戏集成所必需的。

开始使用

借助 GameActivityAndroid Game Development Kit 的其余部分,提升您自己的游戏体验。