假设我有 Activity A 和 Activity B。
在 A 中,我有一个按钮,单击它会运行以下代码
startActivity(new Intent(this, ActivityB.class));
在 B 中,我有一个按钮,单击它会运行以下代码
startActivity(new Intent(this, ActivityA.class));
因此,当应用启动并且用户执行以下操作时:
- 点击 Activity A 中的按钮(他转到 Activity B)
- 点击 Activity B 中的按钮(他返回 Activity A)
- 再次点击 Activity A 中的按钮(再次转到 Activity B)
在这种情况下,Activity A 和 B 是否会占用内存,因为它们每次都启动,或者 Android 是否足够智能,知道一个 Activity 已经启动并且只需要将其放在堆栈顶部?
所以换句话说,如果内存确实被阻塞了,是否有类似的东西:
if(activity has already started)
{
doNotStartActivityButSimplyPutItAtTop();
}
else
{
startActivity(new Intent.....);
}
最佳答案
是的,您的假设是正确的,android 能够管理这些 Activity ,并且它们会为此维护适当的堆栈。
如果您只有两个 Activity,您可以使用单顶启动器模式,这样只有两个 Activity 保留在堆栈中。
关于java - 已经开始 Activity 后 startActivity() 的任何后果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40480145/