我有两个 Activity 正在运行:mainActivity 和 childActivity。每当用户单击 mainActivity 中的按钮时,childActivity 就会启动。我想做的是:
当 Activity Activity 是 childActivity 并且用户单击主页按钮然后重新启动应用程序时,我想看到 childActivity < strong>而不是启动的 mainActivity。
我有一些实际可行的建议。我试图操纵 onStart、onRestart、onResume、onStop、onDestroy 事件。但是,他们并没有完全解决问题。那里应该有一个聪明的方法。谢谢。
编辑:
谢谢你的回答,Soonil。当从最近的 Activity 窗口调用 Activity 时,您所说的情况就会发生。 (长按主页按钮时打开的窗口)但是;从主屏幕打开它时不会发生这种情况。 (比如从头开始)我不认为我的代码有特定的问题来产生这个错误。因为,我创建了一个测试项目并在发送问题之前尝试了独立并遇到了同样的问题。无论如何,这是测试代码:
public class MainActivity extends Activity implements OnClickListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.setTitle("MainActivity");
((Button) findViewById(R.id.btnChildActivity)).setOnClickListener(this);
}
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
startActivity(new Intent(this, ChildActivity.class));
}
}
public class ChildActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
this.setTitle("ChildActivity");
}
}
最佳答案
编辑:今天有点随机地找到了您的问题的解决方案!看这个error report .它准确地解释了你的问题。我无法重现问题的原因是我从未让 Eclipse 直接启动应用程序。我使用 Eclipse 安装应用程序,然后自己启动它。
这已经是 Android 应用程序的默认行为,无需特殊技巧即可实现。我很惊讶您的应用程序没有展示这种行为。每个 Android 应用程序都维护一个 Activity 堆栈,实际上是一个 LIFO Activity 堆栈。这些 Activity 可以进一步分组为任务,但根据我的经验,99% 的普通应用程序永远不需要了解有关任务的任何信息。
当您按下主页按钮时,整个应用程序堆栈都会进入后台。虽然在后台,它可能随时因内存问题而被杀死,但如果在恢复之前没有经过多少时间,它通常不会被杀死,也不必重新创建。当您再次选择该应用程序时,堆栈(或更准确地说,仅堆栈顶部的项目)将恢复。
如果您的应用程序没有表现出这种行为,我怀疑这与您启动 mainActivity 和 childActivity 的方式以及您可能使用的任何额外 Intent 标志有关。您是否有机会发布有关如何启动 mainActivity 和 childActivity 的代码 fragment ?
关于Android:恢复 Activity 的同时恢复应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/724419/