0

我有MainActivity.java,我想从中打开Activity A

假设我Activity A从 开始MainActivity,我将使用以下代码:

Intent i = new Intent(this,A.class);
startActivity(i);

当我在活动 A 中时,我按下后退按钮。后退按钮将完成Activity A并返回MainActivity。因此,如果我重新启动Activity A,它将从头开始重新启动。这不是我想要的。我只想从Activity A创建一个实例,所以如果我从A移动到MainActivity多次,它将不会重新启动,它将保持最后一个状态。

4

1 回答 1

1

当 MainActiivty 启动另一个时,新活动 Activity A 被推到堆栈顶部并获得焦点前一个活动仍保留在堆栈中,但已停止当活动停止时,系统会保留其用户界面的当前状态。

当用户按下后退按钮时,当前活动从栈顶弹出(活动被销毁)并恢复前一个活动(其 UI 的先前状态被恢复)。堆栈中的 Activity 永远不会重新排列,只会从堆栈中压入和弹出——当当前 Activity 启动时将其压入堆栈,并在用户使用“后退”按钮离开时弹出。因此,后堆栈作为“后进先出”对象结构运行。

注意:可以同时在后台执行多个任务。但是,如果用户同时运行多个后台任务,系统可能会开始销毁后台活动以恢复内存,从而导致活动状态丢失。

在您的 MainActivity 到 Activity A 并按回 Button , Activity A 从堆栈中弹出并销毁。

再次从 MainActivty 导航到 A,活动被重新创建,因为它被破坏了。这就是它的工作原理。

有关更多详细信息,请查看以下链接中的后堆栈。

http://developer.android.com/guide/components/tasks-and-back-stack.html

  android:launchMode

关于如何启动活动的说明。有四种模式与 Intent 对象中的活动标志(FLAG_ACTIVITY_* 常量)一起工作,以确定当调用活动来处理意图时应该发生什么。

他们是:

  1. 标准
  2. 单顶
  3. 单任务
  4. 单实例

http://developer.android.com/guide/topics/manifest/activity-element.html#lmode

但是一旦活动被破坏并且您需要导航到该活动,该活动就会重新创建。

于 2013-04-05T04:15:09.687 回答