Android:倾听活动会导致一项活动

时间:2016-11-01 20:16:50

标签: android

在Android中,我正在制作一款简单的游戏。这个游戏基本上由迷你游戏组成。我创建的每个迷你游戏都是一项活动。我们称之为ActivityA ActivityB和ActivityC。

我想"播放" (我非常松散地使用该术语)完成任何这些活动。当用户击败迷你游戏时,1是"广播",当他们输了时,可能是-1。

我需要一些东西来倾听这些"广播"并记录得分,以便知道何时结束比赛。

跟踪这些内容的最佳方式是什么?我应该从哪里开始? 就个人而言,我希望在主菜单和游戏屏幕之间会有一个看不见的活动(或者可能是服务),它会完成所有控制(计数分数,告诉应用程序启动哪些活动等)。 / p>

2 个答案:

答案 0 :(得分:2)

您可能希望阅读一些关于startActivityForResult

的内容

快速概述
您还可以启动另一个活动并返回结果。然后您的MainActivity在onActivityResult()回调中收到它。

在你的“MainActivity”中你会有这样的东西:
您设置新类的意图,然后使用唯一代码调用startActivityForResult以标识已启动的活动)

private void startActivityA() {
    Intent intent = new Intent(this, ActivityA.class);
    startActivityForResult(intent, ACTIVITY_A_CODE);
}

private void startActivityB() {
    Intent intent = new Intent(this, ActivityB.class);
    startActivityForResult(intent, ACTIVITY_B_CODE);
}

private void startActivityC() {
    Intent intent = new Intent(this, ActivityC.class);
    startActivityForResult(intent, ACTIVITY_C_CODE);
}

然后在您的MainActivity中实现onActivityResult方法,类似于下面的方法,您将检查启动的活动(* _CODE),然后检查结果是否正常。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // Check which request we're responding to
    if (requestCode == ACTIVITY_A_CODE) {
        // if the result of the activity was good, then:
        if (resultCode == RESULT_OK) {
           // score++;
        } else {
           // score--;
        }
    }
    else if (requestCode == ACTIVITY_B_CODE) {
        // ....
    }

}


在新活动中,您必须使用setResult()

根据您的标准设置结果


请从Android文档中详细了解startActivityForResult

答案 1 :(得分:1)

如果我们认为您有MainActivity,ActivityA和ActivityB:

1在ActivityA中,您可以将结果数据保存到db并返回到MainActivity并处理结果。但请检查https://developer.android.com/training/basics/activity-lifecycle/index.html

之前的Android Activity生命周期

2在android中你可以直接返回数据。查看Android return data to previous activity

在我看来,第一种方式更好。因为它有更多的机会。您可以在任何情况下保存所有类型的数据。 (OnClose)