跟踪排行榜活动生命周期(Android)

时间:2014-07-10 01:27:14

标签: android google-play-games activity-lifecycle leaderboard start-activity

我试图让我的应用程序尽可能健壮和友好,并针对所有可能的情况进行测试。现在,我正在我的应用程序中启动排行榜:

startActivityForResult(Games.Leaderboards.getLeaderboardIntent(getApiClient(), ID), 1);

当显示排行榜活动时(通过主要活动),用户按下'主页'关键在他们的设备上,并留下一段时间,四件事之一(我认为),可能会发生:

  • 1)没有任何事情发生,用户可以自由地返回应用程序(它将从哪里取出,因为它仍然在内存中)

  • 2)我的应用程序的主要活动(它只有一个活动)被系统杀死以及排行榜活动以释放资源

  • 3)我的应用程序的主要活动被系统杀死以释放资源(但排行榜活动仍然存在)

  • 4)排行榜活动被终止,主应用程序存活

现在,重新启动时,我有代码(使用简单的int变量)来跟踪应用程序暂停时是否显示排行榜。

显然,这个int值只能知道按下home键时排行榜的状态。

重新启动时,如何知道排行榜活动的当前状态?我如何知道它是否仍然存在或系统是否已将其杀死?我需要知道这一点,所以我可以处理任何情况。 (即,如果它仍然存在,那么就不需要重新启动它。)

修改

总结一下,在之前进入后台后返回应用程序时,我怎么知道排行榜活动是否仍然存在/是否显示?

1 个答案:

答案 0 :(得分:0)

我找到了如何做到这一点。我已经对它进行了测试,效果非常好。

我最初将Intent声明为实例变量

private Intent myLeaderboard;

然后在我的 ShowLeaderboard()方法中,我这样做:

ShowLeaderBoard(){

    //Only create new object if one doesn't currently exist
    if (myLeaderboard==null){    
        myLeaderboard = Games.Leaderboards.getLeaderboardIntent(getApiClient(), ID);
    }

    myLeaderboard.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
    startActivityForResult(myLeaderboard, 1);

}