Google Play 游戏 C++ SDK
摘要
组织机构
Play 游戏服务功能的主要入口点是 GameServices 类。GameServices 实例是使用 GameServices::Builder 创建的。请参阅 GameServices
用于访问或更改整个 GameServices 会话状态的方法位于 GameServices 类本身中。
其他功能则通过一组按功能的管理器进行间接管理。这些管理器会将相关功能归为一组;它们本身不含用户可见状态。管理器由引用返回,其生命周期由包含的 GameServices 实例控制。因此,客户端代码绝不应保留管理器引用,而应保留 GameServices 实例。请参阅经理。
数据通过常量值类型的对象返回。这些值可一致地反映执行查询所对应时刻的基础数据情况。请参阅值类型。
线程模型
除非另有说明,否则所有 GameServices 方法和 Manager 方法都是线程安全的异步方法。它们可在任何线程上调用,无需外部锁定,并且执行顺序与其调用顺序一致。通常,更改器方法(用于更改状态的方法)使用触发和遗忘模型。访问器方法(读取状态的方法)具有两种主要变体。第一种变体(名称类似 GetProperty)会以异步方式将其结果提供给所提供的回调;第二种变体(名称类似 GetPropertyBlocking)会以同步方式将其结果返回给调用线程。访问器会看到之前调用的所有更改器的结果;不过,更改器在任何给定时间都可能或可能不会修改远程 Game Services 状态。
所有用户回调(无论是作为访问器方法的参数提供的一次性回调,还是在 GameServices 构建时配置的多用途回调)均在一个专用回调线程上调用。该线程可能不同于“主线程”或“界面线程”的任何平台概念。用户回调应快速执行,因为回调线程停止可能会引起用户可见问题(例如,注销请求延迟完成)。
不可变值类型的属性可同步使用,且不会阻塞。