GameActivity Android Game Development Kit 的一部分。
GameActivity
是一个 Jetpack 库,旨在帮助 Android 游戏在应用的 C/C++ 代码中处理应用周期命令、输入事件和文本输入。GameActivity
是 NativeActivity
的直接后代,具有类似的架构:
如上图所示,GameActivity
执行以下功能:
- 通过 Java 端组件同 Android 框架进行交互。
- 将应用周期命令、输入事件和输入文本传递到原生端。
- 将 C/C++ 源代码建模为三个逻辑组件:
- GameActivity 的 JNI 函数,直接支持 GameActivity 的 Java 功能,并会将事件加入
native_app_glue
中的队列。 native_app_glue
,主要在自己的原生线程(不同于应用的主线程)中运行,并且使用其 Looper 执行任务。- 应用的游戏代码,负责轮询和处理在
native_app_glue
内排队的事件,并在native_app_glue
线程中执行游戏代码。
- GameActivity 的 JNI 函数,直接支持 GameActivity 的 Java 功能,并会将事件加入
借助 GameActivity
,您可以专注于核心游戏开发,并避免花费过多时间处理 JNI 代码。
如果您已熟悉 NativeActivity
,GameActivity
和 NativeActivity
之间的主要区别如下:
GameActivity
会渲染到SurfaceView
中,从而可大幅简化游戏与其他界面组件的交互。- 对于触摸和按键输入事件,
GameActivity
具有全新的实现(采用android_input_buffer
接口),并与NativeActivity
使用的InputQueue
分离开来。 GameActivity
是AppCompatActivity
的派生类,可让您无缝使用其他 Jetpack 组件。ActionBar
、Fragment
等均可用。GameActivity
通过集成 GameTextInput 库来添加文本输入功能。- 派生自
GameActivity
的应用应将 C/C++ 代码的所有三个部分构建到一个库中。另一方面,NativeActivity
的 JNI 函数是框架的一部分(始终由操作系统加载)。因此,应该只将native_app_glue
和应用的 C/C++ 代码构建到一个库中。 NativeActivity
是 Android 框架的一部分,并遵从该框架的发布周期(通常是一年一次)。GameActivity
是 Jetpack 库的一部分,发布频率要高得多(通常是两周一次);新功能和 bug 修复的发布频率可以更高。
我们强烈建议您将 GameActivity
用于新游戏和其他 C/C++ 密集型应用。如果您已有 NativeActivity
应用,我们建议您进行迁移。
请按照以下指南将 GameActivity
集成到您的应用中:
如需向 GameActivity 报告 bug 或请求新功能,请使用 GameActivity 问题跟踪器。