【问题标题】:Exit from Android application not working退出 Android 应用程序不起作用
【发布时间】:2016-01-20 06:56:31
【问题描述】:

在我的 Android 应用程序中,当我从 HomeAcitvity 按下后,我想退出应用程序。但是当我按下它时它总是会进入 Loginactivity。

HomeAcitvity 中使用的以下代码

 @Override
    public void onBackPressed() {
        android.app.AlertDialog.Builder alertDialog = new android.app.AlertDialog.Builder(HomeActivity.this);

        alertDialog.setTitle("Exit"); // Sets title for your alertbox

        alertDialog.setMessage("Are you sure you want to Exit ?"); // Message to be displayed on alertbox

        alertDialog.setIcon(R.drawable.logout_icon); // Icon for your alertbox

/* When positive (yes/ok) is clicked */
        alertDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog,int which) {

                finish();
                System.exit(0);
            }
        });

/* When negative (No/cancel) button is clicked*/
        alertDialog.setNegativeButton("No", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();
            }
        });
        alertDialog.show();
    }

【问题讨论】:

  • 在打开 HomeActivity 之前完成登录活动,如: Intent intent = new Intent(getActivity(),HomeActivity.class); getActivity().startActivity(intent);完成();

标签: android dialog


【解决方案1】:

在调用intent homeactivityfinish();之后的登录activity中

Intent intent = new Intent(LoginActivity.this, HomeActivity.class);
startActivity(intent);
finish();

以及您需要退出的活动

@Override
public void onBackPressed() {
       new AlertDialog.Builder(this).setIcon(android.R.drawable.ic_dialog_alert).setTitle("Exit")
              .setMessage("Are you sure you want to exit?")
              .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
              @Override
              public void onClick(DialogInterface dialog, int which) {
                       finish();
                       System.exit(0);
              }
       }).setNegativeButton("No", null).show();
 }

【讨论】:

    【解决方案2】:

    在你的代码中使用它

    public void onClick(DialogInterface dialog,int which) {
     moveTaskToBack(true);
     android.os.Process.killProcess(android.os.Process.myPid());
     System.exit(1);
     finish();
     }
    

    【讨论】:

      【解决方案3】:

      在启动 Home 活动之前,清除堆栈,如下所示。

      Intent intent_home = new Intent(this, HomeActivity.class);
      intent_home.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
      startActivity(intent_home);
      

      【讨论】:

        【解决方案4】:

        从登录活动启动您的家庭活动时使用以下代码

        Intent intent = new Intent(LoginActivity.this, HomeActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
        startActivity(intent);
        

        上面的代码会清空所有之前打开的activity的backstack。并将启动没有先前/父活动的 HomeActivity。而且您也不需要重写 onBackPress 方法。

        【讨论】:

          【解决方案5】:

          System.exit() 和 finish() 在 android 4.4.2 上看起来很相似。在此之前, System.exit() 不会调用 onActivityResult() 方法,而 finish() 会。否则,它们都结束当前活动。此外,finish() 似乎比 System.exit() 工作得更快。

          我认为你需要这样写:

          android.os.Process.killProcess(android.os.Process.myPid());
          System.exit(0)                   // you may also use finish() or nothing as per your requirements
          

          【讨论】:

            猜你喜欢
            • 2015-01-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多