在工程中,直接調用System.exit(0)函數就能夠實現對工程的關閉。也能夠使用退出對話框提醒的方式進行退出,代碼如示:ide
public boolean onKeyDown(int keyCode, KeyEvent event) 函數
{ui
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) this
{spa
// 確認對話框對象
final AlertDialog isExit = new AlertDialog.Builder(this).create();進程
isExit.setMessage("你肯定要退出?");get
DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {it
public void onClick(DialogInterface dialog, int which) io
{
switch (which)
{
case AlertDialog.BUTTON1:// "確認"按鈕退出程序
NotificationManager notificationManager = (NotificationManager) ModeChooseActivity.this
.getSystemService(NOTIFICATION_SERVICE);
notificationManager.cancel(0);
System.exit(0);
break;
case AlertDialog.BUTTON2:// "取消"按鈕取消對話框
sExit.cancel();
break;
default:
break;
}
}
};
// 註冊監聽
isExit.setButton("YES", listener);
isExit.setButton2("NO", listener);
// 顯示對話框
isExit.show();
return false;
}
return false;
}
可是當工程中有多個activity時,finish只能實現單個活動的關閉。這時候須要將每一個activity存放到一個活動棧中,每開啓一個活動就進一次棧,而後設定在某一個活動中對這個棧進行總體的刪除就好,代碼以下:
public class kill extends Application {
//運用list來保存們每個activity是關鍵
private List<Activity> mList = new LinkedList<Activity>();
//爲了實現每次使用該類時不建立新的對象而建立的靜態對象
private static kill instance;
//構造方法
private kill(){} //實例化一次
public synchronized static kill getInstance(){
if (null == instance) {
instance = new kill();
}
return instance;
}
// add Activity
public void addActivity(Activity activity) {
mList.add(activity);
}
//關閉每個list內的activity
public void exit() {
try {
for (Activity activity:mList) {
if (activity != null)
activity.finish();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
System.exit(0);
}
}
//殺進程
public void onLowMemory() {
super.onLowMemory();
System.gc();
}
}
在活動中使用kill.getInstance().addActivity(this);語句來將此活動添加到棧中,在須要關閉活動棧的activity中使用語句kill.getInstance().exit();來進行活動棧的總體刪除和程序的關閉。