android釋放記憶體的一個辦法
step 1:定義一個監聽介面
public static interface OnLowMemoryListener {
void onLowMemoryReceived();
}
step 2:android application檔案中新增如下程式碼
//初始化
private ArrayList<WeakReference<OnLowMemoryListener>> mLowMemoryListeners;
public MyApp() {
mLowMemoryListeners = new ArrayList<WeakReference<OnLowMemoryListener>>();
}
//註冊監聽
public
void registerOnLowMemoryListener(OnLowMemoryListener listener) {
if (listener != null) {
mLowMemoryListeners
.add(new WeakReference<MyApp.OnLowMemoryListener>(listener));
}
}
//移除監聽
public void unregisterOnLowMemoryListener(OnLowMemoryListener listener) {
if (listener != null) {
int i = 0;
while (i < mLowMemoryListeners.size()) {
final OnLowMemoryListener l = mLowMemoryListeners.get(i).get();
if (l == null || l == listener) {
mLowMemoryListeners.remove(i);
} else {
i++;
}
}
}
}
//記憶體空間過低的時候,被系統呼叫
@Override
public void onLowMemory() {
super.onLowMemory();
int i = 0;
while (i < mLowMemoryListeners.size()) {
final OnLowMemoryListener l = mLowMemoryListeners.get(i).get();
if (l == null) {
mLowMemoryListeners.remove(i);
} else {
l.onLowMemoryReceived();
i++;
}
}
}
step
3:那些浪費記憶體的地方,比如圖片快取,可以實現並註冊這個監聽
相關文章
- vector 的記憶體釋放記憶體
- 請教一個java程式記憶體釋放的問題Java記憶體
- 記憶體的分配與釋放,記憶體洩漏記憶體
- Linux釋放記憶體及手動釋放Oracle共享記憶體段Linux記憶體Oracle
- XCode釋放記憶體XCode記憶體
- linux釋放記憶體Linux記憶體
- vector 避免記憶體頻繁分配釋放與手動釋放vector記憶體記憶體
- 正確釋放Vector的記憶體記憶體
- 記錄一下,linux釋放記憶體的方法Linux記憶體
- 轉 linux 記憶體釋放Linux記憶體
- Linux釋放cache記憶體Linux記憶體
- linux 記憶體釋放命令Linux記憶體
- n97mini專用的c盤空間不足記憶體釋放解決辦法記憶體
- golang 釋放記憶體機制的探索Golang記憶體
- 有時發現系統記憶體不釋放臨時採用辦法,寫成指令碼,定時去釋放記憶體指令碼
- C# 垃圾回收釋放記憶體C#記憶體
- FireFox記憶體自動釋放Firefox記憶體
- 【OpenCV】有關記憶體釋放的一些問題OpenCV記憶體
- 如何主動釋放 HeapIdle 的記憶體API記憶體
- .Net記憶體管理釋放的兩種方式記憶體
- vector clear() 方法 記憶體釋放問題記憶體
- C/C++記憶體分配以及釋放C++記憶體
- Linux之 手動釋放記憶體Linux記憶體
- mongodb釋放記憶體-切換日誌MongoDB記憶體
- Linux下如何釋放cache記憶體Linux記憶體
- Linux系統釋放cache記憶體Linux記憶體
- 電腦記憶體不足怎麼辦? 虛擬記憶體不足的解決辦法記憶體
- Vector() 記憶體釋放 不得不說的故事記憶體
- C++ vector 釋放記憶體的兩種方法C++記憶體
- 如何釋放linux cache佔用的記憶體Linux記憶體
- 讀檔案時,產生大量的記憶體無法釋放,麻煩各位看一下記憶體
- Linux手動釋放快取記憶體Linux快取記憶體
- 自動釋放記憶體!Facebook推出強大Android圖片庫Fresco記憶體Android
- C/C++記憶體釋放應注意的問題C++記憶體
- 高質量的C程式碼.釋放記憶體 薦記憶體
- 記憶體不能為read 記憶體讀寫錯誤的解決辦法記憶體
- 共享記憶體段未釋放導致資料庫記憶體被耗盡記憶體資料庫
- 簡單分配和釋放記憶體指令碼[更新]記憶體指令碼