好吧,我正在Android中实现新的游戏中心,并且有一个我不理解的概念。
我有一个扩展BaseGameActivity(https://developers.google.com/games/services/android/init)的类,所以它是管理成就,排行榜,Google +登录等的人。 我需要另一个类才能从该活动访问游戏中心数据(解锁成就,排行榜等),但不会从扩展的BaseGameActivity类调用此类。
他们如何沟通?
结构是这样的(意思是“ - >”它开始其他活动)
A(扩展BaseGameActivity) - > B - > C(需要与A的游戏中心通信)
我已经阅读了google的示例(TypeANumber),但是它使用了一个Listener进行通信,当你需要与之通信的类是你正在开始的那个类时,这很容易,但是对于我的结构来说并不容易。
有什么想法吗?
由于
答案 0 :(得分:5)
我认为你有3个选择:
答案 1 :(得分:1)
在游戏中的多个屏幕之间共享GamesClient的最简单方法是使用Fragments,我试图在TypeANumber示例中说明。
也就是说,如果您仍希望拥有多个活动,则每个活动必须管理自己的 GamesClient对象,因为GamesClient与特定活动相关联。因此,如果您正在使用示例代码,那么每个Activity都必须从BaseGameActivity派生,并且每个Activity都将获得onSignInSucceeded()。在每个中,您可以使用getGamesClient()来获取 Activity的GamesClient对象。
答案 2 :(得分:0)
如何将需要共享的所有数据封装到单个对象中,例如
class SharedData {
public String aString;
public double aDouble;
// etc
public static SharedData globalInstance = new SharedData();
}
然后您的应用的所有部分都可以通过SharedData.globalInstance访问。
答案 3 :(得分:0)
只是想法......我没有看过这些代码,所以请用盐鲱鱼来对待它。
你可以封装在一个parcel / serializable中,然后在需要它的每个活动中使用set / getparceable吗?我建议传递一个界面,但不确定没有查看代码是多么容易
或者,您可以将游戏客户端逻辑包装在可以与每个活动交互的服务中吗?