在Android中,我正在制作一款简单的游戏。这个游戏基本上由迷你游戏组成。我创建的每个迷你游戏都是一项活动。我们称之为ActivityA ActivityB和ActivityC。
我想"播放" (我非常松散地使用该术语)完成任何这些活动。当用户击败迷你游戏时,1是"广播",当他们输了时,可能是-1。
我需要一些东西来倾听这些"广播"并记录得分,以便知道何时结束比赛。
跟踪这些内容的最佳方式是什么?我应该从哪里开始? 就个人而言,我希望在主菜单和游戏屏幕之间会有一个看不见的活动(或者可能是服务),它会完成所有控制(计数分数,告诉应用程序启动哪些活动等)。 / p>
答案 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)