Skip to content

getManager

获取管理器实例

getManagerSUDRTGameRuntime 提供的扩展性接口。它允许开发者获取 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_COREISUDRTCoreManager核心状态管理,处理引擎全局配置与查询。
KEY_MANAGER_GAME_PACKAGEISUDRTGamePackageManager游戏包管理,处理解压、版本校验、分包加载。
KEY_MANAGER_USERISUDRTUserManager用户系统对接,处理登录态、用户信息同步。
KEY_MANAGER_PLUGINISUDRTPluginManager插件管理,用于扩展游戏的原生能力。

运行行为

  1. 单例保证:每个管理器在同一个 SUDRTGameRuntime 实例中仅存在一个对象,多次调用返回的是同一个实例。
  2. 按需获取:管理器通常在 Runtime 初始化时被创建,调用此接口是获取其引用的标准方式。
  3. 弱耦合设计:通过 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