Android 如何在活动之间传递游戏中心数据?

Android 如何在活动之间传递游戏中心数据?,android,Android,嗯,我正在用android实现新的游戏中心,有一个概念我不明白 我有一个扩展BaseGameActivity()的类,所以它是管理成就、排行榜、Google+登录等的类。 我需要另一个类来访问该活动中的游戏中心数据(解锁成就、排行榜等),但扩展BaseGameActivity类不会调用该类 他们如何沟通 结构是这样的(意思是“->”它开始其他活动) A(扩展BaseGameActivity)->B->C(需要与A进行游戏中心通信) 我读过google的例子(TypeANumber),但是它使用一

嗯,我正在用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个选择:

  • 为每个需要的活动创建GamesClient,但必须为每个活动调用connect(),这需要时间。在第一次连接之后,其他连接的速度要快得多(几百毫秒)
  • 创建自己的应用程序类,并将其用作GamesClient.Builder的上下文,并将GamesClient对象存储在应用程序类中。我已经测试过了,它很有效。现在,我知道这样做是不鼓励的(因为它打破了Android的理念),但似乎很多人更喜欢创建自己的应用程序类并将数据存储到其中,而不是捆绑数据并将数据从一个活动传递到另一个活动。它的主要优点是,你不需要修改很多东西,就可以在你(和我)的案例中使用它
  • 使用片段类而不是活动类,并使用拥有GamesClient对象的主活动(在这种情况下,类C将能够与类a通信)。与您提到的示例一样,只有一个活动继承自Google示例的BaseGameActivity(其中包含GamesClient实例),其余的只是片段类(每个片段都是一个屏幕)

  • 在游戏中的多个屏幕之间共享游戏客户端最简单的方法是使用片段,我试图在TypeANumber示例中说明这一点


    也就是说,如果您仍然希望有多个活动,则每个活动都必须管理自己的GamesClient对象,因为GamesClient与特定的活动相关联。因此,如果您使用的是示例代码,那么每个活动都必须派生自BaseGameActivity,并且每个活动都将获得onSigninsAcceded()。在每一个活动中,您都可以使用getGamesClient()来获取该活动的GamesClient对象。

    仅限于想法。。。我还没看过代码,所以请少管闲事

    您是否可以封装在一个可打包/可序列化的包中,然后在每个需要它的活动中使用set/getparceable?我建议向下传递一个接口,但不确定在不查看代码的情况下这有多容易


    或者,您是否可以将游戏客户端逻辑封装到一个服务中,以便您可以从每个活动中与之交互?

    尚未查看文档,但您是否可以将所需的数据作为额外数据放入
    意图中,您可以尝试做一件事,而不是扩展BaseGameActivity,而是查看他们如何实现它,然后将GamesCient放在应用程序的根级别。对于身份验证部分,GamesClient似乎需要启动一个活动,但我相信您可以很容易地找到一种方法,从初始活动为全局应用程序初始化games客户端。Singleton是一种反模式。我不鼓励这样做。如果您选择使用应用程序对象,而不是定义共享数据,那么最好使用应用程序对象singleton@0909EM我不知道你说的反模式是什么意思?报告甚至提到了单身人士。在任何情况下,我都同意使用应用程序对象可以达到同样的目的。很抱歉,我在wikipedia向您指出(它是最好的或最差的资源),我对Singleton有过混合的体验,有时是有用的,有时是需要测试的sod。。。我只是想指出,单身有时被认为是反模式的。谢谢布鲁诺,这就是我最后所做的。也许下一次我会尝试实现fragmentSun幸运的是,使用片段进行单个活动并不总是可行的。事实上也不是为了扩展一个基类;每个第三方库似乎都认为您可以扩展它们的基类,但Java只有一个继承,我可能希望同时使用不同的库。我真希望这类案例有一个应用程序范围的生命周期。不,它不是可序列化或可打包的。我试图实现的是只登录一次,然后尝试将数据发送到我登录的活动。唯一的解决办法是使用片段。