关于ContentObserver的内存泄漏

时间:2013-01-24 04:28:13

标签: android memory-leaks mat

我在Android应用程序上遇到了内存泄漏问题。

我使用startActivity从activity1到activity2,然后通过按回按钮返回activity1。重复serval时间,adb shell显示应用程序的RSS上升且不能下拉。 最后VM将被关闭。

然后我用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% 

但我从不使用那个课。我怎么能找到真正的原因?

1 个答案:

答案 0 :(得分:0)

您使用的是任何CursorAdapter吗?如果没有正确初始化,它可能会在ContentObserver上创建它,这将产生泄漏。

您应该将此构造函数用于CursorAdapter。标志0将阻止它创建自己的ContentObserver。

new CursorAdapter(context, cursor, 0)