2014-09-01 147 views
-4

我的應用程序出現問題,我想在點擊後退按鈕時關閉我的應用程序。 但是當從這個屏幕回來時,應用程序返回到prev屏幕。我嘗試添加所有退出腳本,但不工作,請幫助。 我的腳本:退出應用程序Android

public void onBackPressed() { 
    Exit = new AlertDialog.Builder(tab1.this).create(); 
    Exit.setTitle("Exit Program"); 
    Exit.setMessage("Exit?"); 
    Exit.setButton("Ya", new DialogInterface.OnClickListener() { 

     public void onClick(DialogInterface dialog, int which) { 
      android.os.Process.killProcess(android.os.Process.myPid()); 
      Intent intent = new Intent(); 
      System.exit(0); 
      finish(); 
      System.runFinalizersOnExit(true); 
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      intent.setAction(Intent.ACTION_MAIN); 
      intent.addCategory(Intent.CATEGORY_HOME); 

      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      startActivity(intent); 

     } 
    }); 

    Exit.setButton2("No", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
     // here you can add functions 
      Exit.dismiss(); 
     } 
    }); 


    Exit.show(); 
} 

// Before 2.0 
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     Exit = new AlertDialog.Builder(tab1.this).create(); 
     Exit.setTitle("Exit Program"); 
     Exit.setMessage("Exit?"); 
     Exit.setButton("Ya", new DialogInterface.OnClickListener() { 

      public void onClick(DialogInterface dialog, int which) { 
       // Progress 
       android.os.Process.killProcess(android.os.Process.myPid()); 
       Intent intent = new Intent(); 
       System.exit(0); 
       finish(); 
       System.runFinalizersOnExit(true); 
       intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       intent.setAction(Intent.ACTION_MAIN); 
       intent.addCategory(Intent.CATEGORY_HOME); 

       intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       startActivity(intent); 
      } 
     }); 

     Exit.setButton2("No", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
      // here you can add functions 
       Exit.dismiss(); 
      } 
     }); 


     Exit.show(); 

     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 
+3

這似乎不是一個好主意,因爲它顛覆了後退按鈕的預期行爲。 – 2014-09-01 04:37:18

+0

我想如果你[搜索](http://www.google.com/search?q=stop+exit+kill+android+app+programatically)足夠你會得到你的答案。也請看[這個問題](http://stackoverflow.com/questions/2033914/quitting-an-application-is-that-frowned-upon)。歡迎來到StackOverflow btw :) – Keale 2014-09-01 04:44:42

+0

Thx評論和分享鏈接,這對我來說非常有用:) – user3811450 2014-09-01 05:02:15

回答

-2

避免killProcess
試試這個代碼:

Intent startMain = new Intent(Intent.ACTION_MAIN); 
startMain.addCategory(Intent.CATEGORY_HOME); 
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
activity.startActivity(startMain); 
System.exit(-1); 
+0

你說「避免'killProcess',但是'System.exit'基本上是一樣的,在Android開發中通常都不會使用這個函數, – 2014-09-01 05:00:37

+0

thx你的評論,它的工作,但我添加腳本開始啓動屏幕我的應用程序在使用腳本退出之前:) – user3811450 2014-09-01 05:04:56

+0

99.9%的應用程序根本不應該「退出」使用'System.exit'在這裏顯然是錯誤的,請讓我看看這個網頁上的'exit'按鈕,關閉我的瀏覽器。 – Simon 2014-09-01 05:20:51

0

試試這個順序:

MYApplication.getInstance().clearApplicationData(); 
    android.os.Process.killProcess(android.os.Process.myPid()); 
    Intent intent1 = new Intent(Intent.ACTION_MAIN); 
    intent1.addCategory(Intent.CATEGORY_HOME); 
    intent1.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent1); 

    finish(); 
+0

thx爲您的評論,它的工作,但我添加腳本開始啓動屏幕我的應用程序之前退出與您的腳本。 :) – user3811450 2014-09-01 05:04:36

0

這是程序退出的Android應用程序的公平和簡單的方法在我看來:

Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.addCategory(Intent.CATEGORY_HOME); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 
finish(); 

希望它有幫助。