当完成任何形式的退出时,即使用HOME、SWITCH和BACK按钮,完全关闭Android应用程序

当完成任何形式的退出时,即使用HOME、SWITCH和BACK按钮,完全关闭Android应用程序,android,Android,我正在构建一个Android应用程序,特别是一个登录页面,如果用户以任何方式退出登录页面,即使用开关、主页或返回按钮,我希望该应用程序完全关闭该应用程序 应用程序不应完全关闭的唯一时间应为用户成功登录时,即按下自定义创建的登录按钮或输入按钮时 我已经能够成功地关闭应用程序,但在中,即使用户成功登录,也会关闭应用程序。它不是要这样做的 下面是我完全关闭的代码-我接管了onDestroy()、onBackPressed()、finish()和onStop()方法: 有人对我的问题有什么想法吗 非常感

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

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

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

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

有人对我的问题有什么想法吗

非常感谢您的帮助

请查看
onStop()
方法的说明。我假设您打开另一个
活动
当用户成功登录时,您上面的
活动
将不可见,并在退出应用程序的位置调用
onStop()
。所以不要重写
onStop()

查找
onStop()方法的解释。我假设您打开另一个
活动
当用户成功登录时,您上面的
活动
将不可见,并在退出应用程序的位置调用
onStop()
。因此,只要不要覆盖
onStop()

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

不管怎样,你试图做的事是被强烈劝阻的。 看看这个(Dianne Hackborn是Android框架的主要开发者之一)

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

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

每次活动不可见时都会调用
onStop()
方法:当应用程序转到后台时,当屏幕关闭时,或切换到其他活动时

不管怎样,你试图做的事是被强烈劝阻的。 看看这个(Dianne Hackborn是Android框架的主要开发者之一)

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

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

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


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


您没有对其中任何一个或
super.onStop()
或任何其他
super.method()
进行
@覆盖。这会导致问题吗?@TronicZomB
@Override
注释只是一种方便,如果以某种方式重命名或删除被重写的方法,注释会有所帮助,因为它会导致编译器警告/错误。这不是强制性的all@nicopico好的,谢谢。我还在学习,所以很高兴认识你。@TronicZomB:你好,谢谢,有super.onStop();开始时,onStop()并不能阻止用户成功登录时它完全退出。@AMonari真棒,很高兴我能提供帮助。您没有对其中任何一个或
super.onStop()
或任何其他
super.method()
进行
@覆盖
。这会导致问题吗?@TronicZomB
@Override
注释只是一种方便,如果以某种方式重命名或删除被重写的方法,注释会有所帮助,因为它会导致编译器警告/错误。这不是强制性的all@nicopico好的,谢谢。我还在学习,所以很高兴认识你。@TronicZomB:你好,谢谢,有super.onStop();在开始时,当用户成功登录时,onStop()不会阻止它完全退出。@AMonari真棒,很高兴我能提供帮助。嗨,谢谢。实际上,当用户登录时,我调用另一个活动,即主页。我已停止覆盖onStop(),但我的问题仍然存在,即假设用户使用home按钮或switch按钮退出应用程序,应用程序不会完全关闭,我要求它这样做。您好,谢谢。实际上,当用户登录时,我调用另一个活动,即主页。我已停止覆盖onStop(),但我的问题仍然存在,即假设用户使用home按钮或switch按钮退出应用程序,应用程序不会完全关闭,我要求它这样做。@nicopio:您好,谢谢。我已经阅读了论坛,我知道不鼓励调用onStop(),如果用户要在主页中退出并切换按钮或退出应用程序(比如通过选择呼叫),我可以如何完全关闭应用程序?Thanks@AMonari我对我的帖子做了一个编辑,这可以让你找到一些合适的方法来实现你想要的。您可以覆盖
onStop()
,这是对
System.exit()
的调用,这是不鼓励的。@nicopio:您好,谢谢。我读过论坛,我明白了
    // 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);
}
@Override
protected void onPause()
{
    super.onPause();
    if (!mLoggedIn) 
    {
        finish();
    }
}