3

我是android应用程序开发的新手。

我开发了一个 android 应用程序,在这个应用程序中,当用户按下返回或退出按钮时,我调用了 finish() 方法。此方法仅关闭当前活动。

我的要求是当我单击退出按钮时,它应该关闭所有活动并显示菜单页面。这可能吗?

4

3 回答 3

3

This subject has received some discussion, here is one that should contain most of the information you're looking for.

Also, see Activity Lifecycle and Process Lifecycle in the Android Documentation on Activities to understand the hows and whys of closing apps.

于 2012-10-26T10:13:07.363 回答
3

当您从A活动转到B活动时,在A活动中调用finish().so会得到. 当您在顶部活动上按返回或退出按钮时,堆栈变空,然后您将转到菜单屏幕或主屏幕。android stack finish() or get killed

例如:当您从A 活动转到 B 活动时,请执行以下步骤:

startActivity(new Intent(A.this, B.class));
finish();

这样你的A活动就完成了,你的新B活动开始了。在这里,当您按下返回按钮或退出按钮时,您将进入主屏幕或菜单屏幕。

在这里,我们有两种方法可以finish or kill让应用程序按下后退按钮

  1. 使用finish()which关闭或完成android 屏幕上的当前活动。

    例如:您有 2 个活动,即AB。您将使用意图从A活动转到B活动,现在前景活动是B,您想返回并杀死B活动并使用后退按钮的onclick转到A活动。finish()如果您在A活动中,则它会关闭应用程序。见下面的代码。

    public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
    finish();
    }
    return super.onKeyDown(keyCode, event);
    }
    
  2. 使用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);
    }
    
于 2012-10-26T10:04:42.900 回答
1

我的要求是当我单击退出按钮时,它应该关闭所有活动并显示菜单页面。

假设“菜单页面”是您的活动,调用startActivity(),并Intent标识您的“菜单页面”,并将FLAG_ACTIVITY_CLEAR_TOPFLAG_ACTIVITY_SINGLE_TOP作为标志包含在您的Intent. 这将清除您任务中的所有活动并将您现有的“菜单页面”带到前台(如果没有,则创建“菜单页面”的实例)。

于 2012-10-26T14:20:24.613 回答