【发布时间】:2015-01-31 19:09:11
【问题描述】:
假设有两个活动:
1. 活动 A(启动器活动)
2. 活动B
当从 Activity A 启动 Activity B 时,我完成了 Activity A。
startActivity(new Intent(A.this, B.class));
finish();
如果从 Activity B 中单击退出按钮,则 Activity B 完成。
ExitButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
所以,假设 Activity B 从 Activity A 启动,而我从 Activity B 退出(或从 Application 退出)。有 2 个选项,从哪里启动应用程序:
1. 从启动器图标
2.从最近的应用程序
现在,如果应用程序从 launcher icon 启动,那么 Activity A 就会启动。但是如果应用程序是从 Recent Apps 启动的,那么 Activity B 就会启动。
我认为,Activity B 仍保留在堆栈中,即使我为它调用 finish()。
我的问题是:当应用程序退出时,如何清除堆栈?在Android 2.3.6版本测试
【问题讨论】:
-
简单的答案:你不能。这是一个 Android 设计,Stackoverflow 中有几个关于这个问题的问题和答案。有一些奇怪的解决方案,但它们都不是真正始终有效或 100% API 符合。
-
我认为您无需任何输入即可直接从 Activity A 启动 Activity B,并且还关闭了 Activity A,因此当您从最近启动应用程序时,它可能看起来像 Activity B 将直接显示而不是 Activity A。
-
另一种解决方案是使用片段,在 onCreate() 中设置您的默认片段。
标签: android android-activity android-memory android-task