編輯:關於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裡面就行了
一、Android中WebView的漏洞分析最近在開發過程中遇到一個問題,就是WebView使用的時候,還是需要解決之前系統(4.2之前)導致的一個漏洞,雖然現在這個系統
(1)ButterKnife是什麼?在開發過程中,我們總是會寫大量的findViewById和點擊事件,像初始view、設置view監聽這樣簡單而重復的操作讓人覺得特別麻
實現原理(1)首先獲得下載文件的長度,然後設置本地文件的長度。(2)根據文件長度和線程數計算每條線程下載的數據長度和下載位置。如:文件的長度為6M,線程數為3,那麼,每條
前段時間做項目的時候,在項目中用了WebView組件,遇到了一些問題,所以特地找來了一些資料,學習怎麼解決,現在將學習的內容整理成一篇博客記錄在這裡,方便以後