中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

android activity 管理工具類

2018-07-20    來源:open-open

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬Linux鏡像隨意使用
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對(duì)象,單例模式
	 * @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);
	}

	/**
	 * 功能描述: 獲取當(dāng)前Activity(堆棧中最后一個(gè)壓入的)
	 * @return
	 */
	public Activity currentActivity(){
		Activity activity = activityStack.lastElement();
		return activity;
	}

	/**
	 * 功能描述: 結(jié)束當(dāng)前Activity(堆棧中最后一個(gè)壓入的)
	 */
	public void finishActivity(){
		Activity activity = activityStack.lastElement();
		finishActivity(activity);
	}

	/**
	 * 功能描述: 結(jié)束指定的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;
		}
	}

	/**
	 * 功能描述: 結(jié)束指定類名的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是否已經(jīng)消失,如果未消失,則消失activity,如果棧里面有activity,但是已經(jīng)消失了,則從棧里面
					//移除該對(duì)象,為了防止多頁面跳時(shí),部分activity被錯(cuò)誤加入.
					if(!activity.isFinishing()){
						activityStackTemp.add(activity);
						activity.finish();
					}
				}
			}
			//在list集合遍歷的時(shí)候,不能刪除list中的元素,否則會(huì)報(bào)java.util.ConcurrentModificationException異常
			activityStack.removeAll(activityStackTemp);
		// 在這里捕獲空,當(dāng)程序退出,又接收推送,點(diǎn)擊推送,這個(gè)方法報(bào)空
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 功能描述: 結(jié)束所有Activity
	 */
	public static void finishAllActivity(){
		//這里可能會(huì)報(bào)數(shù)組越界的錯(cuò)誤提前異常捕獲
		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();
		}
	}

	/**
	 * 功能描述: 退出應(yīng)用程序
	 * @param context 上下文
	 * @param isBackground 是否開啟后臺(tái)運(yùn)行
	 */
	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{
			// 注意,如果您有后臺(tái)程序運(yùn)行,請(qǐng)不要支持此句子
			if (!isBackground){
//				System.exit(0);    // 程序在下載時(shí)開啟了下載service,此處不要?dú)⒌羧魏芜M(jìn)程
			}
		}
	}
}

標(biāo)簽:

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:ios后臺(tái)更新和下載

下一篇:php提取圖片的主要顏色