android activity 管理工具類
import java.util.Stack;import android.app.Activity; import android.app.ActivityManager; import android.content.Context;
public class AppManager {
private static Stack<Activity> activityStack; private static AppManager instance; private AppManager(){ } /** * 功能描述:獲取AppManager對象,單例模式 * @return */ public static AppManager getAppManager(){ if (instance == null){ instance = new AppManager(); } return instance; } /** * 功能描述: 添加Activity到堆棧 * @param activity */ public void addActivity(Activity activity){ if (activityStack == null){ activityStack = new Stack<Activity>(); } activityStack.add(activity); } /** * 功能描述: 獲取當前Activity(堆棧中最后一個壓入的) * @return */ public Activity currentActivity(){ Activity activity = activityStack.lastElement(); return activity; } /** * 功能描述: 結束當前Activity(堆棧中最后一個壓入的) */ public void finishActivity(){ Activity activity = activityStack.lastElement(); finishActivity(activity); } /** * 功能描述: 結束指定的Activity * @param activity */ public void finishActivity(Activity activity){ if (activity != null){ activityStack.remove(activity); activity.finish(); activity = null; } } /** * 功能描述: 移除指定的Activity * @param activity */ public void removeActivity(Activity activity){ if (activity != null){ activityStack.remove(activity); activity = null; } } /** * 功能描述: 結束指定類名的Activity * @param cls */ public static void finishActivity(Class<?> cls){ try { Stack<Activity> activityStackTemp = new Stack<Activity>(); for (Activity activity : activityStack){ if (activity.getClass().equals(cls)){ //判斷activity是否已經消失,如果未消失,則消失activity,如果棧里面有activity,但是已經消失了,則從棧里面 //移除該對象,為了防止多頁面跳時,部分activity被錯誤加入. if(!activity.isFinishing()){ activityStackTemp.add(activity); activity.finish(); } } } //在list集合遍歷的時候,不能刪除list中的元素,否則會報java.util.ConcurrentModificationException異常 activityStack.removeAll(activityStackTemp); // 在這里捕獲空,當程序退出,又接收推送,點擊推送,這個方法報空 } catch (Exception e) { e.printStackTrace(); } } /** * 功能描述: 結束所有Activity */ public static void finishAllActivity(){ //這里可能會報數組越界的錯誤提前異常捕獲 Stack<Activity> activityStackTemp = new Stack<Activity>(); activityStackTemp.addAll(activityStack); try { for (int i = 0, size = activityStackTemp.size(); i < size; i++){ if (null != activityStackTemp.get(i)){ if(!activityStackTemp.get(i).isFinishing()){ activityStackTemp.get(i).finish(); } } } activityStack.clear(); } catch (Exception e) { e.printStackTrace(); } } /** * 功能描述: 退出應用程序 * @param context 上下文 * @param isBackground 是否開啟后臺運行 */ public void AppExit(Context context, Boolean isBackground){ try{ finishAllActivity(); ActivityManager activityMgr = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); activityMgr.killBackgroundProcesses(context.getPackageName());
// android.os.Process.killProcess(android.os.Process.myPid()); } catch (Exception e){ e.printStackTrace(); } finally{ // 注意,如果您有后臺程序運行,請不要支持此句子 if (!isBackground){ // System.exit(0); // 程序在下載時開啟了下載service,此處不要殺掉任何進程 } } } } </pre>
本文由用戶 n7w77 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!