我有MainActivity.java
,我想从中Activity A
打开。
假设我从Activity
开启A
MainActivity
,我将使用此代码:
Intent i = new Intent(this,A.class);
startActivity(i);
当我在活动A中时,我按下后退按钮。后退按钮将完成活动A 并返回 MainActivity 。因此,如果我重新启动活动A ,它将从头开始重新启动。这不是我想要的。我只想从活动A 创建一个实例,所以如果我根据需要多次从 A 迁移到 MainActivity ,它将会不再重新启动,它将保持最后状态。
答案 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_ *常量)结合使用,以确定在调用活动处理意图时应该发生什么。
他们是:
http://developer.android.com/guide/topics/manifest/activity-element.html#lmode
但是,一旦活动被销毁并且您需要导航到该活动,则会重新创建该活动。