2012-09-26 199 views
0

我希望我的應用程序在啓動時檢查用戶名和密碼是否保存在sharedPreferences中。如果它檢測到這些憑證,將顯示一個登錄頁面,如果沒有,則會顯示一個註冊頁面。在用戶登錄到應用程序後,我希望整個應用程序關閉設備的後退按鈕或推送應用程序退出按鈕。如何關閉或退出Android活動

除了應用程序正常關閉以外,我還有一切工作。我以爲自己編碼正確,但沒有。如何在選擇退出和設備後退按鈕時關閉整個應用程序。

退出方法:

 public void onClick(DialogInterface dialog, int which) { 
     // TODO Auto-generated method stub 
     finish(); 
     } 
     }); 
    builder.setNegativeButton("No", new DialogInterface.OnClickListener() { 

      public void onClick(DialogInterface arg0, int arg1) { 
       arg0.cancel(); 
      } 
     }); 
    AlertDialog alert=builder.create(); 
    alert.show(); 
+1

http://stackoverflow.com/questions/4617049/how-to-exit-from-an-android-app –

+0

有些情況下你曾經想在一個Android應用程序的退出按鈕很少的情況下:http://blog.radioactiveyak.com/2010/05/when-to-include-exit-button-in-android.html – adamp

回答

3

按下後退按鈕時,您的活動直接讓finish()

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event)  { 
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 
     finish(); 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+0

爲什麼要爲此重寫onKeyDown,而不是使用活動生命週期方法onWindowFocus還是onPause? – mah

+0

作者特意詢問如何在按下後退時採取措施。如果你不認爲他們真的是這個意思,我邀請你與他們就這個問題開一個對話。 –

+0

有一個明顯的onBackPressed方法,可以更適合覆蓋。默認情況下已經調用finish()。 – adamp

1
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); 

/*int pid = android.os.Process.myPid();=====> use this if you want to kill your activity. But its not a good one to do. 
android.os.Process.killProcess(pid);*/ 

} 

電話時要退出應用此方法。

爲假設你想退出該應用程序被按下時後退按鈕只是做這樣

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 
    AppExit(); 
} 
return super.onKeyDown(keyCode, event); 
} 
1

您可以使用此代碼關閉或退出應用程序。

android.os.Process.killProcess(android.os.Process.myPid());