3

我在我的 android 应用程序上遇到了有关内存泄漏的问题。

我使用startActivity从activity1到activity2,然后通过按返回按钮返回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% 

但我从不使用那个类。我怎样才能找出真正的原因?

4

1 回答 1

0

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

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

new CursorAdapter(context, cursor, 0) 
于 2013-07-06T10:59:56.743 回答