Android減少記憶體洩漏之靜態內部類的使用

2021-07-12 00:57:16 字數 527 閱讀 1978

我們在程式中往往為了省事而順手使用內部類實現所要功能,比如:

new hanlder()/new

thread()/new timertask()

等等,但是這麼做恰恰會帶來隱患,既是 非靜態內部類會持有 所在類的物件,而如果此時是在activity中的話那麼所帶來的後果就是記憶體洩漏了。。

而要避免此類問題也很簡單了,就是要把非靜態內部類改為靜態內部類,而它所持有外部類的物件則改為弱引用的形式。具體例子如下:

private

static

class

progresstimertask

extends

timertask

@override

public

void

run()

// do soming

}}

當然最常用的使用場景還是在用handler的時候了。在使用的時候一定要判斷為空的情況,因為弱引用的話很容易被**的。。

android記憶體洩漏

參考 什麼是記憶體洩漏 記憶體洩露,簡單的說,就是該被釋放的記憶體沒有被釋放,一直被某個或某些例項所引用但不能被使用,導致gc不能 造成記憶體洩漏。總結的說,可以理解為長生命週期的物件一直持有短生命週期物件的引用,導致短生命週期物件一直被引用而無法被gc 記憶體洩漏是造成oom的主要原因之一,當乙個...

android 記憶體洩漏

1 android效能優化 記憶體洩漏 上 android效能優化 記憶體洩漏 下 1 錯誤的單例模式 public class singleton public static singleton getinstance context context return instance 即使activ...

MVP設計模式減少記憶體洩漏

寫在present類中 自定義方法名 public void onbinddestory 在loginpresenter介面中定義乙個方法void onbinddestory 對應presenter 中的這個方法 寫在 view層類中 override protected void ondestro...