阻止“近期”加载次要活动

时间:2019-11-10 01:28:11

标签: android android-activity android-recents

我的应用有两项活动。我们仅将它们称为“ A”和“ B”(B是重量级游戏)。它应该起作用的方式是:启动“ A”,验证OBB软件包,安装它,然后启动“ B”,然后将一些数据传递给“ B”,然后“ A”调用就完成了。

重要的是,“ A”是唯一可以启动/创建“ B”的东西。

正在发生的事情是,当“ B”由于内存压力而被操作系统终止时,然后一段时间后,用户任务通过“最近的”切换回它,Android尝试创建一个新的“ B”活动。 / p>

在这种情况下,我希望它启动一个新的“ A”活动,然后将创建“ B”。有人可以告诉我我应该怎么做吗?

重要的是,用户必须能够在应用程序之间进行切换,拨打电话等,如果仍然存在并且尚未终止,则可以返回到已创建/正在运行的“ B”活动。如果已终止,则点击它需要启动活动“ A”,以便可以验证和重新安装OBB等。

注意:为了使问题简短,我不得不简化并掩盖了一些复杂的内容,但让我们假设不能将“ A”的准备移到“ B”。我知道在此简化级别上看起来像是一个理智的工作,但可惜不是。

1 个答案:

答案 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。