2013-01-24 58 views
3

我遇到了一個關於我的android應用程序內存泄漏的問題。關於ContentObserver的內存泄露

我使用從activity1到start2的startActivity,然後通過按回button.repeat serval時間返回activity1,adb shell顯示應用程序的RSS上升並且不能下拉。最後虛擬機將被關閉。

然後我用MAT發現:

Leak Suspects» Leaks» Problem Suspect 1 Description 
59 instances of "android.database.ContentObserver$Transport", loaded by "<system class loader>" occupy 1,569,864 (39.41%) bytes. 

Keywords 
android.database.ContentObserver$Transport 

Reference Pattern 
Class Name Shallow Heap Retained Heap Percentage 
class android.database.ContentObserver$Transport @ 0x40308cc0 0 0 0.00% 

,但我從來沒有使用class.How我能找出真正的原因是什麼?

+0

使用LeakCanary找到泄漏的位置 –

回答

0

你使用的是CursorAdapter嗎?如果沒有正確初始化,它可能會在ContentObserver上創建它,這會產生泄漏。

您應該將此構造函數用於CursorAdapter。標誌0將阻止它創建自己的ContentObserver。

new CursorAdapter(context, cursor, 0)