Android Activity管理类优化内存利器非常方便
来源:互联网 发布:家庭智能音乐系统 知乎 编辑:程序博客网 时间:2024/05/16 09:03
项目开启的Activity越多,占的内存越多,我们是不是有时候想当我打开很多界面的时候,我们到底打开多少个Activity,OK现在你的难题解决了,只有把这个Activity管理类复制到你的项目当中,随时随地管理的你的Activity,让你成为内存的主导者!不要问我叫什么,请叫我雷锋!首先看看效果图:
代码献上:
/** * 2014-6-7 上午10:40:16 */package com.jiub.client.mobile.manager;import java.util.Stack;import android.app.Activity;import com.jiub.client.mobile.utils.QLog;/** * @author zqy * * */public class ScreenManager {private final static String TAG=ScreenManager.class.getSimpleName(); private static Stack<Activity> activityStack; private static ScreenManager instance; public static ScreenManager getScreenManager(){ if (instance == null) { instance = new ScreenManager(); } QLog.i(TAG, "ScreenManager create"); return instance; } /** * 从栈中移除最后一个元�? */ public void popActivity(){ Activity activity = currentActivity(); if (activity != null) { if (!activity.isFinishing()) { activity.finish(); } activityStack.removeElement(activity); activity = null; } QLog.i(TAG, "ScreenManager popActivity "); } /** * 从栈中移除指定的元素 * @param activity */ public void popActivity(Activity activity){ if (activity != null) { QLog.i(TAG, "要删除"+activity.getClass().getSimpleName()); if (!activity.isFinishing()) { activity.finish(); QLog.i(TAG, activity.getClass().getSimpleName()+"正在关闭"); }else{ QLog.i(TAG, activity.getClass().getSimpleName()+"已经关闭"); } activityStack.removeElement(activity); QLog.i(TAG, activity.getClass().getSimpleName()+"从栈中移除"); activity = null; } int size=activityStack.size(); QLog.i(TAG, "删除后个数"+size); } /** * 将新元素添加到栈中 * @param activity */ public void pushActivity(Activity activity){ if (activityStack == null) { activityStack = new Stack<Activity>(); } activityStack.addElement(activity); QLog.i(TAG, "加入"+activity.getClass().getSimpleName()); int size=activityStack.size(); QLog.i(TAG, "添加后个数"+size); } /** * 获取栈顶元素 * @return */ public Activity currentActivity(){ Activity activity = null; try { activity = activityStack.lastElement(); } catch (Exception e) { } return activity; } /** * 移除全部元素,除了指定类型的以外 * @param cls */ public void popAllActivityExceptOne(Class<?> cls){ int size = activityStack.size(); for (int i = 0; i < size; i++) { Activity activity = activityStack.get(i); if (activity != null && activity.getClass().equals(cls)) { }else{ popActivity(activity); size--; i--; } } } /** * 按照给定的Class,结束一个Activity * @param cls */ public void finishActivityByClass(Class<?> cls){ int size = activityStack.size(); for (int i = 0; i < size; i++) { Activity activity = activityStack.get(i); if (activity != null && activity.getClass().equals(cls)) { popActivity(activity); size--; i--; } } } }
最后在Activity onCreate方法中写上三行的代码:
protected ScreenManager mScreenManager;//初始化
mScreenManager = ScreenManager.getScreenManager();mScreenManager.pushActivity(this);在Activity的onDestroy方法里面写上这行代码
mScreenManager.popActivity(this);但是那如果你有BaseActivity就不需要在每个Activity里面写了,把上面的四行代码写在BaseActivity里面就行了
2 0
- Android Activity管理类优化内存利器非常方便
- android内存管理优化
- Android内存优化利器:MAT打开内存Bitmap(Windows版本)
- Android内存管理优化建议
- Android内存管理优化建议
- Android内存管理及优化
- Android内存管理优化技巧
- Android 内存优化---管理应用的内存
- android Activity管理类(全局管理Activity)
- android Activity管理类(全局管理Activity)
- android Activity管理类(全局管理Activity)
- android activity管理类
- Android进程的内存管理分析[非常经典]
- 在Android里使用数据库 - 非常方便
- android内存优化-Activity, Thread引起的内存泄露0
- 自定义任务栈,方便管理Activity
- Android内存管理策略的优化
- Android内存管理策略的优化
- 编程算法 - 赛马问题
- Android实现异步处理 -- HTTP请求为例
- GridView中的CheckBox单击事件(oncheckedchanged)
- 导出数据到Excel 2003 单个Sheet页(NPOI)
- xcode6中如何对scrollview进行自动布局(autolayout)
- Android Activity管理类优化内存利器非常方便
- 将程序中文件保存至沙盒中
- Rescue (bfs)
- ORACLE 11g 自动内存管理
- 过度拟合
- [Android] AsyncTask使用实例---加载网络图片
- cc3200学习系列--开发环境的搭建
- there is no statement named “ ” in this sqlmap报错原因。
- 设备驱动1