【发布时间】:2012-10-26 22:20:24
【问题描述】:
我是 android 应用程序开发的新手。
我开发了一个 android 应用程序,在这个应用程序中,当用户按下返回或退出按钮时,我调用了 finish() 方法。此方法仅关闭当前活动。
我的要求是当我点击退出按钮时,它应该关闭所有活动并显示菜单页面。这可能吗?
【问题讨论】:
我是 android 应用程序开发的新手。
我开发了一个 android 应用程序,在这个应用程序中,当用户按下返回或退出按钮时,我调用了 finish() 方法。此方法仅关闭当前活动。
我的要求是当我点击退出按钮时,它应该关闭所有活动并显示菜单页面。这可能吗?
【问题讨论】:
这个主题已经得到了一些讨论,here 应该包含您正在寻找的大部分信息。
另外,请参阅Android Documentation on Activities 中的 Activity Lifecycle 和 Process Lifecycle,以了解关闭应用程序的方式和原因。
【讨论】:
当你从A活动转到B活动时,在android stack中调用finish().so,A活动会得到@987654323 @。当您在顶部活动上按返回或退出按钮时,堆栈会变空,然后您将转到菜单屏幕或主屏幕。
例如:当您从 A 活动到 B 活动时执行以下步骤:
startActivity(new Intent(A.this, B.class));
finish();
所以您的 A 活动完成,您的新 B 活动开始。在这里,当您按下返回按钮或退出按钮时,您将进入主屏幕或菜单屏幕。
这里我们有两种方法来finish or kill应用程序按下后退按钮。
使用finish() 关闭或完成 android 屏幕上的当前活动。
例如:您有 2 个活动,即 A 和 B。您将使用意图从 A 活动转到 B 活动,现在前台活动是 B,您想返回并杀死 B 活动和转到 A 活动使用finish() onclick 后退按钮。如果您在 A 活动,则它会关闭应用程序。见下面的代码。
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
finish();
}
return super.onKeyDown(keyCode, event);
}
使用 android.os.Process.killProcess(android.os.Process.myPid()); 杀死应用程序,即强制关闭应用程序并转到主屏幕。请参阅下面的代码。
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
// Kills & force closes the app
android.os.Process.killProcess(android.os.Process.myPid());
}
return super.onKeyDown(keyCode, event);
}
【讨论】:
我的要求是当我点击退出按钮时,它应该关闭所有活动并显示菜单页面。
假设“菜单页面”是您的活动,请致电startActivity(),并使用Intent 标识您的“菜单页面”,并将FLAG_ACTIVITY_CLEAR_TOP 和FLAG_ACTIVITY_SINGLE_TOP 包括在Intent 上作为标志。这将清除您任务中的所有活动,并将您现有的“菜单页”置于前台(如果没有,则创建“菜单页”的实例)。
【讨论】: