在android中调用finish()后,应用程序没有关闭

时间:2017-11-21 06:44:18

标签: android android-layout android-studio android-fragments android-alertdialog

我正在开发一个应用程序,其中我有一个对话框,当我点击退出按钮时,我想关闭应用程序,但有时应用程序不会完成并返回到我的第一个活动。我不明白该怎么做。

相同的代码

    AlertDialog.Builder alertDialog = new AlertDialog.Builder(getContext());
        alertDialog.setMessage(context.getResources().getString(R.string.app_close_dialog_msg));
        alertDialog.setPositiveButton(R.string.app_close_dialog_msg_yes, new OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                dismiss();
                ((Activity) context).finish();
                //((Activity) context). moveTaskToBack(true);
                System.exit(0);
                android.os.Process.killProcess(android.os.Process.myPid());



            }
        });

4 个答案:

答案 0 :(得分:2)

<强>唐&#39;吨

if(button.name=="some name")

<强>不要

  System.exit(0);
  android.os.Process.killProcess(android.os.Process.myPid()); 

答案 1 :(得分:1)

如果您的minSdk&gt; = 16,请尝试拨打ActivityCompat.finishAffinity(activity);,这应该会关闭您应用的所有活动

答案 2 :(得分:0)

AlertDialog.Builder alertDialog = new AlertDialog.Builder(getContext());
alertDialog.setMessage(context.getResources().getString(R.string.app_close_dialog_msg));
alertDialog.setPositiveButton(R.string.app_close_dialog_msg_yes, new OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {       
            switch (which) {
                case DialogInterface.BUTTON_POSITIVE:
                    finish();
                    break;
             }
        }

这样做会有效。

答案 3 :(得分:0)

请勿添加系统killprocess方法,而必须添加finishaffinity()方法以退出应用程序。下面是代码:

AlertDialog.Builder alertDialog = new AlertDialog.Builder(getContext());
   alertDialog.setMessage(context.getResources().

getString(R.string.app_close_dialog_msg));
    alertDialog.setPositiveButton(R.string.app_close_dialog_msg_yes,new

OnClickListener() {
    public void onClick (DialogInterface dialog,int which){
        dismiss();
        ((Activity) context).finishAffinity();

    }
});