Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Activity管理類優化內存利器非常方便

Android Activity管理類優化內存利器非常方便

編輯:關於Android編程

項目開啟的Activity越多,占的內存越多,我們是不是有時候想當我打開很多界面的時候,我們到底打開多少個Activity,OK現在你的難題解決了,只有把這個Activity管理類復制到你的項目當中,隨時隨地管理的你的Activity,讓你成為內存的主導者!不要問我叫什麼,請叫我雷鋒!首先看看效果圖:


\

代碼獻上:

<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHByZSBjbGFzcz0="brush:java;">/** * 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 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(); } 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裡面就行了








  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved