1. 程式人生 > >Android開發-自定義application對activity的管理與控制

Android開發-自定義application對activity的管理與控制

自定義AppManager,在需要呼叫的地方例項化呼叫。

程式碼如下:

/********************************************** 
* @類名: AppManager 
*
* @描述:  應用程式Activity管理類:用於Activity管理和應用程式退出
*
* @作者: DCL
* 
* @建立日期: 2015-10-16 
* 
* @版本: V1.0 
*
* @修訂歷史:
* 
***********************************************/
public class AppManager {
	
	private static Stack<Activity> activityStack;
	private static AppManager instance;
	
	private AppManager(){}
	/**
	 * 單一例項
	 */
	public static AppManager getAppManager(){
		if(instance==null){
			instance=new AppManager();
		}
		return instance;
	}
	/**
	 * 新增Activity到堆疊
	 */
	public void addActivity(Activity activity){
		if(activityStack==null){
			activityStack=new Stack<Activity>();
		}
		activityStack.add(activity);
	}
	/**
	 * 獲取當前Activity(堆疊中最後一個壓入的)
	 */
	public Activity currentActivity(){
		Activity activity=activityStack.lastElement();
		return activity;
	}
	/**
	 * 結束當前Activity(堆疊中最後一個壓入的)
	 */
	public void finishActivity(){
		Activity activity=activityStack.lastElement();
		finishActivity(activity);
	}
	/**
	 * 結束指定的Activity
	 */
	public void finishActivity(Activity activity){
		if(activity!=null){
			activityStack.remove(activity);
			activity.finish();
			activity=null;
		}
	}
	/**
	 * 結束指定類名的Activity
	 */
	public void finishActivity(Class<?> cls){
		if (null!=cls) {
			for (Activity activity : activityStack) {
                if(activity.getClass().equals(cls) ){
                    finishActivity(activity);
                }
            }
		}
	}
	/**
	 * 結束所有Activity
	 */
	public void finishAllActivity(){
		for (int i = 0, size = activityStack.size(); i < size; i++){
            if (null != activityStack.get(i)){
            	activityStack.get(i).finish();
            }
	    }
		activityStack.clear();
	}
	/**
	 * 退出應用程式
	 */
	public void AppExit(Context context) {
		try {
			finishAllActivity();
			ActivityManager activityMgr= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
			activityMgr.restartPackage(context.getPackageName());
			System.exit(0);
			android.os.Process.killProcess(android.os.Process.myPid());
		} catch (Exception e) {	}
	}
}

其中,對於Activity的管理統用也可以藉助集合,將activity加入到集合中,定義addActivity,removeActivity,removeAllActivity等方法。移除全部進行高階For迴圈遍歷集合,逐個移除。在一鍵退出程式記得呼叫System.exit();方法。

以上是開發專案時的一些心得,僅供參考。