Android sysout.exit(0) 和finish()區別


finish是Activity的類,僅僅針對Activity,當調用finish()時,只是將活動推向后台,並沒有立即釋放內存,活動的資源並沒有被清理;當調用System.exit(0)時,殺死了整個進程,這時候活動所占的資源也會被釋放。

在開發android應用時,常常通過按返回鍵(即keyCode == KeyEvent.KEYCODE_BACK)就能關閉程序,其實大多情況下該應用還在任務里運行着,其實這不是我們想要的結果。

我們可以這樣做,當用戶點擊自定義的退出按鈕或返回鍵時(需要捕獲動作),我們在onDestroy()里強制退出應用,或直接殺死進程,具體操作代碼如下:

 

 

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

//按下鍵盤上返回按鈕

if(keyCode == KeyEvent.KEYCODE_BACK){

 

new AlertDialog.Builder(this)

.setIcon(R.drawable.services)

.setTitle(R.string.prompt)

.setMessage(R.string.quit_desc)

.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

}

})

.setPositiveButton(R.string.confirm, new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int whichButton) {

finish();

}

}).show();

return true;

}else{

return super.onKeyDown(keyCode, event);

}

}

 

 

@Override

protected void onDestroy() {

super.onDestroy();

System.exit(0);

//或者下面這種方式

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

 

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM