import android.app.Activity; import android.app.ActivityManager; import android.content.Context; import java.util.Stack; public class AppManager { private static Stack<Activity> mActivityStack; private static AppManager mAppManager; private AppManager() { } /** * 單一實例 */ public static AppManager getInstance() { if (mAppManager == null) { mAppManager = new AppManager(); } return mAppManager; } /** * 添加Activity到堆棧 */ public void addActivity(Activity activity) { if (mActivityStack == null) { mActivityStack = new Stack<Activity>(); } mActivityStack.add(activity); } /** * 獲取棧頂Activity(堆棧中最後一個壓入的) */ public Activity getTopActivity() { Activity activity = mActivityStack.lastElement(); return activity; } /** * 結束棧頂Activity(堆棧中最後一個壓入的) */ public void killTopActivity() { Activity activity = mActivityStack.lastElement(); killActivity(activity); } /** * 結束指定的Activity */ public void killActivity(Activity activity) { if (activity != null) { mActivityStack.remove(activity); activity.finish(); activity = null; } } /** * 結束指定類名的Activity */ public void killActivity(Class<?> cls) { for (Activity activity : mActivityStack) { if (activity.getClass().equals(cls)) { killActivity(activity); } } } /** * 結束所有Activity */ public void killAllActivity() { for (int i = 0, size = mActivityStack.size(); i < size; i++) { if (null != mActivityStack.get(i)) { mActivityStack.get(i).finish(); } } mActivityStack.clear(); } /** * 退出應用程序 * 結束整個App,包括service等其它Activity組件。要注意加上權限 * <uses-permission Android:name=\"android.permission.RESTART_PACKAGES\"></uses-permission> * * 總結: finish():結束當前Activity,不會立即釋放內存。遵循android內存管理機制。 exit():結束當前組件如Activity,並立即釋放當前Activity所佔資源。 killProcess():結束當前組件如Activity,並立即釋放當前Activity所佔資源。 restartPackage():結束整個App,包括service等其它Activity組件。 */ public void AppExit(Context context) { try { killAllActivity(); ActivityManager activityMgr = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); activityMgr.restartPackage(context.getPackageName()); System.exit(0); } catch (Exception e) { } } }
app管理類
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.