我们说我有活动A和活动B.
在A中,我有一个按钮,单击该按钮时会运行以下代码
startActivity(new Intent(this, ActivityB.class));
在B中,我有一个按钮,当点击它时,运行以下代码
startActivity(new Intent(this, ActivityA.class));
因此,当应用程序启动并且用户执行以下操作时:
在这种情况下,活动A和B是否会因为每次启动而占用内存,或者Android是否足够聪明,知道活动已经开始并且只需要放在堆栈顶部?
换句话说,如果记忆确实被堵塞了,那么就有:
if(activity has already started)
{
doNotStartActivityButSimplyPutItAtTop();
}
else
{
startActivity(new Intent.....);
}
答案 0 :(得分:1)
是的,你的假设是正确的,android能够管理这些活动,并且它们维护适当的堆栈。
如果你只有两个活动,你可以使用singletop启动器模式,这样只有两个活动可以保留在堆栈中。
答案 1 :(得分:0)
android系统可能会释放堆栈中先前活动的资源。为避免丢失活动的当前状态,您可能必须保存它,然后在重新创建活动时恢复。请参阅Recreating an Activity。