日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

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

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

來源:程序員人生   發(fā)布時間:2014-11-09 09:33:00 閱讀次數:3675次

個人總結的1些安卓利用開發(fā)的經驗

在我們開發(fā)利用的時候,常常會有很多很多的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的限制,固然在使用之前你需要首先肯定你的利用沒有被系統(tǒng)燒毀。

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

更多的用法,大家去發(fā)掘吧。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 美女一区二区三区 | 久久国产电影 | 99精品视频在线观看 | 色诱亚洲精品久久久久久 | 国产综合激情 | 中文字幕在线观看第一页 | 干片先生在线观看 | 精品亚洲一区二区三区 | 国产精品区一区二区三 | 日韩精品三级 | 金瓶狂野欧美性猛交xxxx | 婷婷成人在线 | 爱爱一级视频 | av片免费在线播放 | 欧美一区二区在线观看 | 欧洲精品一区二区三区 | 疯狂做受xxxx高潮欧美日本 | 丰满少妇高潮惨叫久久久久 | av福利在线 | 午夜欧美一区二区三区在线播放 | 欧美va天堂在线电影 | 国产专区一区二区三区 | 欧美一区一区 | 一区二区三区回区在观看免费视频 | 亚洲精品国产一区 | 日本 欧美 国产 | swag国产精品一区二区 | 久久免费视频观看 | 色一乱一伦一图一区二区精品 | 久久久网 | 88888888国产一区二区 | 亚洲区欧美 | 日本在线一区 | 久久99精品久久久久婷综合 | 国产一区欧美 | 黄色网址在线播放 | 久久综合一区 | 99在线精品视频 | 玖玖玖影院 | 国产精品1区2区3区 久久美女性网 | 久久精彩 |