【Android工具類】Activity管理工具類AppManager
轉載請注明出處: http://blog.csdn.net/zhaokaiqiang1992
import java.util.Stack;import android.app.Activity; import android.app.ActivityManager; import android.content.Context; /** * * @ClassName: com.qust.myutils.AppManager * @Description: Activity管理類:用于管理Activity和退出程序 * @author zhaokaiqiang * @date 2014-11-20 下午4:53:33 * */ public class AppManager { // Activity棧 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) { for (Activity activity : activityStack) { if (activity.getClass().equals(cls)) { finishActivity(activity); } } } /** * 結束所有Activity */ public void finishAllActivity() { for (int i = 0; i < activityStack.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.killBackgroundProcesses(context.getPackageName()); System.exit(0); } catch (Exception e) { } } } </pre>
這個類是從oschina的android客戶端開源項目中抽取出來的,主要用于Activity的管理和應用程序的退出。如果我們在退出程序的時候,調用AppManager.AppExit(Context)就可以將棧中所有的Activity實例銷毀。
如果我們要更加方便的是用這個管理類,推薦創建一個Activity的基類,并在onCreate和onDestory方法里面調用對應的方法,這樣我們就不需要單獨在某個Activity里面添加重復邏輯,精簡代碼,比如像下面這樣
/*** 對context進行初始化,并將當前的Activity加入到堆棧中,便于管理 */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 添加Activity到堆棧 AppManager.getAppManager().addActivity(this); } @Override protected void onDestroy() { super.onDestroy(); // 結束Activity&從堆棧中移除 AppManager.getAppManager().finishActivity(this); } </pre>
本文由用戶 ph44 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!