0

我正在构建一个 Android 应用程序,特别是一个登录页面,如果用户以任何方式(即使用 SWITCH、HOME 或 BACK 按钮)退出登录页面,我希望该应用程序完全关闭该应用程序。

应用程序不应该完全关闭的唯一时间应该是用户成功登录时,即按下自定义创建的登录按钮或输入按钮时。

我已经能够成功关闭应用程序,但即使用户成功登录也会关闭。它不是为了这样做。

下面是我完全关闭的代码 - 我接管了 onDestroy()、onBackPressed()、finish() 和 onStop() 方法:

    // Deal with back button
public void onBackPressed() {
    System.runFinalizersOnExit(true);

    System.exit(0);     
}

// Deal with exiting of app
public void finish() {

    System.runFinalizersOnExit(true);

    System.exit(0);

}

// Deal with exiting of app
public void onDestroy() {
    System.runFinalizersOnExit(true); 

    System.exit(0);
}

// Deal with exiting of app
public void onStop() {
    System.runFinalizersOnExit(true); 

    System.exit(0);
}

有人对我的问题有任何想法吗

非常感谢您的帮助

4

3 回答 3

2

在此处查看该onStop()方法的说明。我想你Activity在用户成功登录后打开另一个,你的上面变得不可见并在你退出应用程序的地方Activity调用。onStop()所以只是不要覆盖onStop().

于 2013-03-13T15:33:13.673 回答
1

onStop()每次使您的活动不可见时都会调用该方法:当您的应用程序进入后台时,当屏幕关闭时,或者当您切换到另一个活动时

无论如何,强烈劝阻您尝试做的事情。请参阅此论坛主题(Dianne Hackborn 是 Android 框架的主要开发人员之一)。

使用 强制关闭您的应用程序很可能会与 Android 应用程序生命周期发生冲突,并且可能会破坏其保存的状态,从而导致用户出现意外和不愉快的行为System.exit()Process.killProcess()

更好的方法是在启动登录活动时FLAG_ACTIVITY_SINGLE_TOP使用标志。FLAG_ACTIVITY_CLEAR_TOP这应该从应用程序中删除以前的活动,这与从用户的角度启动一个新应用程序相同。

于 2013-03-13T15:37:05.383 回答
0

只需创建一个类成员布尔值,并在按下自定义创建的登录按钮或输入按钮时将mLoggedIn其设置为true 。
然后

@Override
protected void onPause()
{
    super.onPause();
    if (!mLoggedIn) 
    {
        finish();
    }
}
于 2013-03-13T17:44:18.150 回答