Android中關閉Activity
阿新 • • 發佈:2019-01-26
1.知曉當前是哪個Activity
2.隨時關閉所有Activity
有時我們可能會打開了很多個Activity,突然來個這樣的需求,在某個頁面可以關掉所有的Activity並退出程式!好吧,下面提供一個關閉所有Activity的方法,就是用一個list集合來儲存所有Activity!
具體程式碼如下:
public class ActivityCollector { public static LinkedList<Activity> activities = new LinkedList<Activity>(); public static void addActivity(Activity activity) { activities.add(activity); } public static void removeActivity(Activity activity) { activities.remove(activity); } public static void finishAll() { for(Activity activity:activities) { if(!activity.isFinishing()) { activity.finish(); } } } }
3.完全退出App的方法
上面說的是關閉所有Activity的,但是有些時候我們可能想殺死整個App,連後臺任務都殺死殺得一乾二淨的話,可以使用搭配著下述程式碼使用:
實現程式碼:
/** * 退出應用程式 */ public void AppExit(Context context) { try { ActivityCollector.finishAll(); ActivityManager activityMgr = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); activityMgr.killBackgroundProcesses(context.getPackageName()); System.exit(0); } catch (Exception ignored) {} }
4.雙擊退出程式的兩種方法:
1)定義一個變數,來標識是否退出
// 定義一個變數,來標識是否退出 private static boolean isExit = false; Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); isExit = false; } }; public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if (!isExit) { isExit = true; Toast.makeText(getApplicationContext(), "再按一次退出程式", Toast.LENGTH_SHORT).show(); // 利用handler延遲傳送更改狀態資訊 mHandler.sendEmptyMessageDelayed(0, 2000); } else { exit(this); } return false; } return super.onKeyDown(keyCode, event);}
2)儲存點選時間:
//儲存點選的時間
private long exitTime = 0;
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if ((System.currentTimeMillis() - exitTime) > 2000) {
Toast.makeText(getApplicationContext(), "再按一次退出程式",
Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
exit();
}
return false;
}
return super.onKeyDown(keyCode, event);
}
文章來自於:http://www.runoob.com/w3cnote/android-tutorial-activity-start.html