getManager
获取管理器实例
getManager 是 SUDRTGameRuntime 提供的扩展性接口。它允许开发者获取 Runtime 内部负责特定业务逻辑的单一实例(Singleton)。通过该方法,你可以访问游戏包管理、用户信息管理以及插件系统等核心功能。
方法声明
java
/**
* 获取指定名称对应的管理器实例
*
* @param name 要获取的管理器的名称(对应接口中定义的 KEY_MANAGER_* 常量)
* @param options 可选参数,目前版本建议传 null
* @return 返回管理器的 Object 实例。需根据 name 强转为对应的接口类型。若名称非法则返回 null。
*/
Object getManager(@NonNull String name, Bundle options);管理器类型对照表
调用此方法后,必须将返回值强制转换为对应的 SDK 接口才能调用其内部方法:
| 常量名称 (String Key) | 对应接口类型 | 功能描述 |
|---|---|---|
| KEY_MANAGER_CORE | ISUDRTCoreManager | 核心状态管理,处理引擎全局配置与查询。 |
| KEY_MANAGER_GAME_PACKAGE | ISUDRTGamePackageManager | 游戏包管理,处理解压、版本校验、分包加载。 |
| KEY_MANAGER_USER | ISUDRTUserManager | 用户系统对接,处理登录态、用户信息同步。 |
| KEY_MANAGER_PLUGIN | ISUDRTPluginManager | 插件管理,用于扩展游戏的原生能力。 |
运行行为
- 单例保证:每个管理器在同一个
SUDRTGameRuntime实例中仅存在一个对象,多次调用返回的是同一个实例。 - 按需获取:管理器通常在 Runtime 初始化时被创建,调用此接口是获取其引用的标准方式。
- 弱耦合设计:通过
Object返回和String索引,方便 SDK 在后续版本中扩展新的管理器而无需修改核心接口定义。
代码示例
java
// 示例:获取游戏包管理器并查询版本
Object managerObj = runtime.getManager(SUDRTGameRuntime.KEY_MANAGER_GAME_PACKAGE, null);
if (managerObj instanceof ISUDRTGamePackageManager) {
ISUDRTGamePackageManager packageManager = (ISUDRTGamePackageManager) managerObj;
// 使用 packageManager 执行具体操作,例如检查某个游戏是否已安装
boolean isInstalled = packageManager.isGamePackageInstalled("game_id_101");
Log.i("SUDOP", "Game installed: " + isInstalled);
} else {
Log.e("SUDOP", "Manager not found or type mismatch.");
}注意事项
- 空指针检查:在进行强转之前,务必检查返回值是否为
null,并建议使用instanceof进行安全校验。 - 调用时机:建议在
loadCore成功后获取对应的管理器,以确保底层逻辑已完全初始化。 - Options 限制:当前版本的
options参数主要保留用于未来扩展,目前请统一传入null。