多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > android應用框架搭建------AppManager

android應用框架搭建------AppManager

來源:程序員人生   發布時間:2014-11-09 09:33:00 閱讀次數:3668次

個人總結的1些安卓利用開發的經驗

在我們開發利用的時候,常常會有很多很多的activity,這時候候,我們就需要1個activity棧來幫忙管理activity的finish和start。

就拿OSC的安卓客戶端為例,代碼使用了1個stack<Activity>來保存全部的activity。

/** * 利用程序Activity管理類:用于Activity管理和利用程序退出 * * @author kymjs * @version 1.0 * @created 2013⑴1⑵4 */ public class AppManager { private static Stack<BaseActivity> activityStack; private static AppManager instance; private AppManager() { } /** * 單實例 , UI無需斟酌多線程同步問題 */ public static AppManager getAppManager() { if (instance == null) { instance = new AppManager(); } return instance; } /** * 添加Activity到棧 */ public void addActivity(BaseActivity activity) { if (activityStack == null) { activityStack = new Stack<BaseActivity>(); } activityStack.add(activity); } /** * 獲得當前Activity(棧頂Activity) */ public BaseActivity currentActivity() { if (activityStack == null || activityStack.isEmpty()) { return null; } BaseActivity activity = activityStack.lastElement(); return activity; } /** * 獲得當前Activity(棧頂Activity) 沒有找到則返回null */ public BaseActivity findActivity(Class<?> cls) { BaseActivity activity = null; for (BaseActivity aty : activityStack) { if (aty.getClass().equals(cls)) { activity = aty; break; } } return activity; } /** * 結束當前Activity(棧頂Activity) */ public void finishActivity() { BaseActivity 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 (BaseActivity activity : activityStack) { if (activity.getClass().equals(cls)) { finishActivity(activity); } } } /** * 關閉除指定activity之外的全部activity 如果cls不存在于棧中,則棧全部清空 * * @param cls */ public void finishOthersActivity(Class<?> cls) { for (BaseActivity 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.killBackgroundProcesses(context.getPackageName()); System.exit(0); } catch (Exception e) { System.exit(0); } } }

這里是對全部利用的activity操作,可以看到,有退出利用的方法,關閉指定activity的方法,關閉全部activity的方法,和關閉除指定activity之外的全部activity。

那末說1下這個類的作用吧,首先,該類使用1個單例模式去管理,使得全部利用在任何地方都可以訪問這個activity棧,這樣就方便了利用的操作。

例如我們可以這樣定義1個Toast

public static showMessage(String msg){ Toast.makeText(AppManager.getAppManager().currentActivity(), msg, Toast.LENGTH_SHORT).show(); }

可以看到,我們定義了1個可以在全局使用的Toast,不再受Context的限制,固然在使用之前你需要首先肯定你的利用沒有被系統燒毀。

再比如我們有時候在1個service中做業務處理,然后想返回處理結果的時候,卻不知道當時的activity是不是照舊存在(它有可能已被用戶關閉),此時就能夠使用activity棧獲得到當前棧頂的activity通過instanceof關鍵字判斷是不是是我們想要的activity。

更多的用法,大家去發掘吧。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 小说 都市 欧美 亚洲 | 亚洲小视频在线播放 | 亚洲性69影院在线观看 | 爰上碰23在线视频 | 欧美videosfree性喷潮 | 国产成人毛片视频不卡在线 | 欧美人与性另类 | 久久国产精品最新一区 | 最近中文字幕免费mv视频8 | 欧美亚洲春色系列 | 国产精品v片在线观看不卡 国产精品v在线播放观看 | aⅴ在线免费观看 | 国产精品久久久久一区二区三区 | 国产在线精品一区二区夜色 | 成人a在线观看 | 久久99精品久久久久久秒播 | 精品久久中文久久久 | 成人免费的性色视频 | 高清国产性色视频在线 | 欧美一区二区三区久久综合 | 麻豆成人在线 | 羞羞网站入口 | 免费精品久久久视频 | 欧美高清视频手机在在线 | 高清午夜线观看免费 | 日本69色视频在线观看 | 免费网站在线视频美女被 | 亚欧乱色一区二区三区 | 亚洲精品www久久久久久 | 国产人成精品综合欧美成人 | 日本黄色网址大全 | 一级毛片a免费播放王色 | 香蕉在线精品一区二区 | 国产亚洲精品久久久久久 | 国产一区二区三区四区五区 | 国产亚洲人成网站观看 | 欧美妇性猛交视频 | 有码一区| 香蕉国产成版人视频在线观看 | 国产在线观看精品一区二区三区91 | 久久国产精品自由自在 |