我在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%
但我从不使用那个课。我怎么能找到真正的原因?
答案 0 :(得分:0)
您使用的是任何CursorAdapter吗?如果没有正确初始化,它可能会在ContentObserver上创建它,这将产生泄漏。
您应该将此构造函数用于CursorAdapter。标志0将阻止它创建自己的ContentObserver。
new CursorAdapter(context, cursor, 0)