我的应用有两项活动。我们仅将它们称为“ A”和“ B”(B是重量级游戏)。它应该起作用的方式是:启动“ A”,验证OBB软件包,安装它,然后启动“ B”,然后将一些数据传递给“ B”,然后“ A”调用就完成了。
重要的是,“ A”是唯一可以启动/创建“ B”的东西。
正在发生的事情是,当“ B”由于内存压力而被操作系统终止时,然后一段时间后,用户任务通过“最近的”切换回它,Android尝试创建一个新的“ B”活动。 / p>
在这种情况下,我希望它启动一个新的“ A”活动,然后将创建“ B”。有人可以告诉我我应该怎么做吗?
重要的是,用户必须能够在应用程序之间进行切换,拨打电话等,如果仍然存在并且尚未终止,则可以返回到已创建/正在运行的“ B”活动。如果已终止,则点击它需要启动活动“ A”,以便可以验证和重新安装OBB等。
注意:为了使问题简短,我不得不简化并掩盖了一些复杂的内容,但让我们假设不能将“ A”的准备移到“ B”。我知道在此简化级别上看起来像是一个理智的工作,但可惜不是。
答案 0 :(得分:0)
从A打开活动B时,在Intent中传递一些数据,然后每次创建活动B时都要检查该数据是否存在,否则为活动A创建一个Intent并终止活动B。
活动A:
Intent i = new Intent(activity, ActivityB.class);
// Pass your data or otherwise a boolean like so
i.putExtra("validIntent", true);
startActivity(i);
finish();
活动B:
Bundle loginBundle = getIntent().getExtras();
boolean continueActivity = false;
if (loginBundle =! null) {
if (loginBundle.getBoolean("validIntent");) {
continueActivity = true;
}
}
if (!continueActivity) {
startActivity(new Intent(this, ActivityA.class));
finish();
}
要在暂停时保留数据/布尔值,可以使用saveInstanceState。