已经开始活动后startActivity()的任何后果?

时间:2016-11-08 06:12:55

标签: java android android-studio

我们说我有活动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.....);
}

2 个答案:

答案 0 :(得分:1)

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

如果你只有两个活动,你可以使用singletop启动器模式,这样只有两个活动可以保留在堆栈中。

答案 1 :(得分:0)

android系统可能会释放堆栈中先前活动的资源。为避免丢失活动的当前状态,您可能必须保存它,然后在重新创建活动时恢复。请参阅Recreating an Activity