Android開發-自定義application對activity的管理與控制
阿新 • • 發佈:2019-01-31
自定義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();方法。
以上是開發專案時的一些心得,僅供參考。