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