我有MainActivity.java,我想从它中打开Activity A。
假设我从Activity A打开MainActivity,我将使用以下代码:
Intent i = new Intent(this,A.class);
startActivity(i);当我在活动A的时候,我按后退按钮。后退按钮将完成活动A并返回到MainActivity。因此,如果我重新启动Activity ,它将从一开始就重新启动。这不是我想要的。我只希望从MainActivity Activity A中创建一个实例,因此如果我尽可能多地从A移动到A,它将不会被重新启动,它将保持最后一个状态。
发布于 2013-04-05 04:15:09
当MainActiivty启动另一个新的活动时,活动A被推到堆栈的顶部,并获得焦点。之前的活动保留在堆栈中,但已停止。当活动停止时,系统保留其用户界面的当前状态.。
当用户按后退按钮时,当前活动将从堆栈顶部弹出(活动被销毁),并恢复以前的活动(恢复其UI的前一状态)。堆栈中的活动从不重新安排,只有在当前活动启动时才从堆栈中推送到堆栈上,在用户使用后退按钮离开堆栈时才弹出。因此,后端堆栈作为“先入后出”对象结构运行。
注意:可以一次在后台执行多个任务。但是,如果用户同时运行多个后台任务,系统可能会开始销毁后台活动以恢复内存,从而导致活动状态丢失。
在您的MainActivity中,从活动A到活动A并按下按钮,活动A将从堆栈中停止并销毁。
同样,从MainActivty导航到A,活动被重新创建,因为它被破坏了。这就是它的工作原理。
有关更多细节,请查看下面链接中的back堆栈。
http://developer.android.com/guide/components/tasks-and-back-stack.html
android:launchMode关于如何开展这一活动的指导。意图对象中有四种模式与活动标志(FLAG_ACTIVITY_*常量)一起工作,以确定当调用活动来处理意图时应该发生什么。
它们是:
http://developer.android.com/guide/topics/manifest/activity-element.html#lmode。
但是,一旦活动被破坏,并且您需要导航到该活动,该活动将被重新创建。
https://stackoverflow.com/questions/15825515
复制相似问题