Android 如何在活动之间传递游戏中心数据?
嗯,我正在用android实现新的游戏中心,有一个概念我不明白 我有一个扩展BaseGameActivity()的类,所以它是管理成就、排行榜、Google+登录等的类。 我需要另一个类来访问该活动中的游戏中心数据(解锁成就、排行榜等),但扩展BaseGameActivity类不会调用该类 他们如何沟通 结构是这样的(意思是“->”它开始其他活动) A(扩展BaseGameActivity)->B->C(需要与A进行游戏中心通信) 我读过google的例子(TypeANumber),但是它使用一个监听器来进行通信,当你需要与之通信的类是你正在启动的类时,这很容易,但是我的结构就没有那么容易了 有什么想法吗Android 如何在活动之间传递游戏中心数据?,android,Android,嗯,我正在用android实现新的游戏中心,有一个概念我不明白 我有一个扩展BaseGameActivity()的类,所以它是管理成就、排行榜、Google+登录等的类。 我需要另一个类来访问该活动中的游戏中心数据(解锁成就、排行榜等),但扩展BaseGameActivity类不会调用该类 他们如何沟通 结构是这样的(意思是“->”它开始其他活动) A(扩展BaseGameActivity)->B->C(需要与A进行游戏中心通信) 我读过google的例子(TypeANumber),但是它使用一
谢谢如何将所有需要共享的数据封装到一个单一对象中,例如
class SharedData {
public String aString;
public double aDouble;
// etc
public static SharedData globalInstance = new SharedData();
}
然后你的应用程序的所有部分都可以通过SharedData.globalInstance访问。我认为你有3个选择:
在游戏中的多个屏幕之间共享游戏客户端最简单的方法是使用片段,我试图在TypeANumber示例中说明这一点
也就是说,如果您仍然希望有多个活动,则每个活动都必须管理自己的GamesClient对象,因为GamesClient与特定的活动相关联。因此,如果您使用的是示例代码,那么每个活动都必须派生自BaseGameActivity,并且每个活动都将获得onSigninsAcceded()。在每一个活动中,您都可以使用getGamesClient()来获取该活动的GamesClient对象。仅限于想法。。。我还没看过代码,所以请少管闲事 您是否可以封装在一个可打包/可序列化的包中,然后在每个需要它的活动中使用set/getparceable?我建议向下传递一个接口,但不确定在不查看代码的情况下这有多容易
或者,您是否可以将游戏客户端逻辑封装到一个服务中,以便您可以从每个活动中与之交互?尚未查看文档,但您是否可以将所需的数据作为额外数据放入
意图中,您可以尝试做一件事,而不是扩展BaseGameActivity,而是查看他们如何实现它,然后将GamesCient放在应用程序的根级别。对于身份验证部分,GamesClient似乎需要启动一个活动,但我相信您可以很容易地找到一种方法,从初始活动为全局应用程序初始化games客户端。Singleton是一种反模式。我不鼓励这样做。如果您选择使用应用程序对象,而不是定义共享数据,那么最好使用应用程序对象singleton@0909EM我不知道你说的反模式是什么意思?报告甚至提到了单身人士。在任何情况下,我都同意使用应用程序对象可以达到同样的目的。很抱歉,我在wikipedia向您指出(它是最好的或最差的资源),我对Singleton有过混合的体验,有时是有用的,有时是需要测试的sod。。。我只是想指出,单身有时被认为是反模式的。谢谢布鲁诺,这就是我最后所做的。也许下一次我会尝试实现fragmentSun幸运的是,使用片段进行单个活动并不总是可行的。事实上也不是为了扩展一个基类;每个第三方库似乎都认为您可以扩展它们的基类,但Java只有一个继承,我可能希望同时使用不同的库。我真希望这类案例有一个应用程序范围的生命周期。不,它不是可序列化或可打包的。我试图实现的是只登录一次,然后尝试将数据发送到我登录的活动。唯一的解决办法是使用片段。