如何在创建第一个实例后从一个Activity移动到另一个Activity?

时间:2013-04-05 03:40:34

标签: android

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

假设我从Activity开启A MainActivity,我将使用此代码:

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

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

1 个答案:

答案 0 :(得分:1)

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

当用户按下“返回”按钮时,当前活动从堆栈顶部弹出(活动被销毁),之前的活动将恢复(其UI的先前状态已恢复) 。堆栈中的活动永远不会重新排列,只能在当前活动启动时从堆栈中推送并弹出到堆栈中,并在用户使用“返回”按钮离开时弹出。因此,后堆栈作为“后进先出”对象结构运行。

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

在MainActivity to Activity A中并按回按钮,活动A是paopped form stack并销毁。

再次从MainActivty导航到A,活动在被销毁后重新创建。这是它的工作原理。

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

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

  android:launchMode

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

他们是:

  1. 标准
  2. singleTop
  3. singleTask
  4. singleInstance
  5. http://developer.android.com/guide/topics/manifest/activity-element.html#lmode

    但是,一旦活动被销毁并且您需要导航到该活动,则会重新创建该活动。