2013-01-24 23 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)