假设我有活动A和活动B。

在A中,我有一个按钮,单击该按钮将运行以下代码

startActivity(new Intent(this, ActivityB.class));


在B中,我有一个按钮,单击该按钮可运行以下代码

startActivity(new Intent(this, ActivityA.class));


因此,当应用程序启动且用户执行以下操作时:


单击活动A中的按钮(他进入活动B)
单击活动B中的按钮(他回到活动A)
再次单击活动A中的按钮(再次进入活动B)


在这种情况下,活动A和活动B是否每次都开始就占用了内存,或者Android是否足够聪明以知道活动已经开始并且仅需要放在栈顶?

因此,换句话说,如果确实确实阻塞了内存,那么会出现以下情况:

if(activity has already started)
{
   doNotStartActivityButSimplyPutItAtTop();
}
else
{
   startActivity(new Intent.....);
}

最佳答案

是的,您的假设是正确的android能够管理这些活动,并且它们为此维护适当的堆栈。

如果您只有两个活动,则可以使用singletop启动器模式,以便堆栈中仅保留两个活动。

关于java - 启动 Activity 后,startActivity()有什么后果?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40480145/

10-12 02:38