Android Activity管理類最佳化記憶體利器非常方便

來源:互聯網
上載者:User

Android Activity管理類最佳化記憶體利器非常方便

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



代碼獻上:

<喎?http://www.bkjia.com/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裡面就行了








聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.