如何完全关闭Android应用程序

Bre*_*ett 16 android back-button back-button-control close-application

我创建了一个带有注销选项的android应用程序onCreateOptionsMenu.Logout工作正常,但是当我再次按下后退按钮时,它会将我带到上一个活动,当它获得空值时,它会重定向到登录屏幕.现在我的登录屏幕一次又一次出现.当我按下后退按钮但我不知道如何完全关闭应用程序.

这是我在登录屏幕中处理后退按钮的代码:

@Override
public void onBackPressed() {
    new AlertDialog.Builder(this)
        .setTitle("BidNEMO")
        .setMessage("Are you sure you want to exit?")
        .setNegativeButton(android.R.string.no, null)
        .setPositiveButton(android.R.string.yes, new OnClickListener() {
         public void onClick(DialogInterface arg0, int arg1) {
         Main.super.onBackPressed();
         finish();
         }
         }).create().show();
     }
Run Code Online (Sandbox Code Playgroud)

请帮帮你..

ryd*_*rz8 53

Quit Application在按钮上单击使用此代码:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

试试吧..

要杀死完整的应用程序并将其从Running应用程序列表中删除通过其pid(令人讨厌的)杀死应用程序...在上面的代码之前使用这一行.

int pid = android.os.Process.myPid();
android.os.Process.killProcess(pid);
Run Code Online (Sandbox Code Playgroud)

  • 你只是故意回家.它与调用另一个活动的意图有什么不同.我不认为该应用程序将关闭.相反,它会最小化. (3认同)

sAc*_*re. 15

如果你想完全关闭应用程序,你应该使用finishAffinity();而不是finish() .它将清除以前由应用程序打开的所有活动堆栈.

  • `finishAffinity()` 仅适用于 API 级别 16 或更高版本。 (2认同)

Roy*_*ron 6

对于Xamarin用户:

int pid = Android.OS.Process.MyPid();
Android.OS.Process.KillProcess(pid);
Run Code Online (Sandbox Code Playgroud)

把它放在你的OnDestroy()功能中.

编辑:

在彻底调查之后,我发现即使我写的上述代码也没有完全"杀死"该应用程序(从任务管理器中删除它 - "最近的应用程序").最后,经过大量的代码试用后,我设法解决了一些问题,用这段代码覆盖了"Finish"函数:

public override void Finish()
    {
        if (Android.OS.Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
        {
            base.FinishAndRemoveTask();
        }
        else
        {
            base.Finish();
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是该问题的唯一解决方案!


chi*_*iru 5

完成活动我正在使用此代码:

public void appExit () {
    this.finish();
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}  //close method
Run Code Online (Sandbox Code Playgroud)

或使用此代码终止进程:

int pid = android.os.Process.myPid();
android.os.Process.killProcess(pid);
Run Code Online (Sandbox Code Playgroud)


Mic*_*ton 5

适用于API 21及更高版本

finishAndRemoveTask()

您可以调用此按钮完全关闭应用程序。所有活动将finish()被删除,该应用将从任务列表中删除。