防止handler記憶體洩漏

2021-07-11 23:01:42 字數 947 閱讀 5191

記憶體洩漏:程式執行會用到記憶體,在退出程式的時候,占用記憶體的資料沒有釋放,那麼當資料越來越多的時候,就會產生記憶體洩漏。

handler為什麼會記憶體洩漏呢,handler是個內部類,內部類會持有外部類的引用,內部類需要依賴外部類。handler需要定義為靜態類,當你推出activity,handler還在工作,

下面是引起記憶體溢位的:activity已經finish,但handler還在工作

public

class

mainactivity

extends

activity

}, 1000*60*10);

finish();

}private handler myhandler=new handler();

};}

解決方法:用軟引用並用靜態內部類

/**

* *@author administrator 定義乙個內部類時,會預設引用外部類物件的引用,當使用內部類時,使用static定義為靜態內部類

* 引用:強引用(new) 軟引用,弱引用

*/public

class

mainactivity

extends

activity

}, 1000 * 60 * 10);

finish();

}private myhanler handler=new myhanler(this);

private

static

class

myhanler

extends

handler

@override

public

void

handlemessage(message msg) }}

}

Handler系列之記憶體洩漏

本篇簡單的講一下平常使用handler時造成記憶體洩漏的問題。什麼是記憶體洩漏?大白話講就是分配出去的記憶體,不回來。嚴重會導致記憶體不足oom。下面來看一下造成記憶體洩漏的 public class memoryleakactivity extends activity private class...

Android防止Handler造成記憶體洩漏的方法

handler使用不當會造成activity的記憶體洩漏,所以使用handler應該按照如下寫法 private static class myhandler extends handler override public void handlemessage message msg 同時,要在成員...

try finally 妙用,防止記憶體洩漏

function createbutton obj.nm use ver function return obj 這裡由於需要返回建立的物件,所以不能把obj直接設為null.return 後obj是區域性變數,不能在外部斷開其與htmlelement的引用.ie中將出現問題洩漏問題 按鈕.做某些事...