我正在使用LeakCanary来识别内存泄漏。我有一个 Activity 将自身添加为 onResume 中的 StatusChangeObserver,如下所示:
final int mask = ContentResolver.SYNC_OBSERVER_TYPE_PENDING |
ContentResolver.SYNC_OBSERVER_TYPE_ACTIVE;
mSyncObserverHandle = ContentResolver.addStatusChangeListener(mask, this);
并停止监听 onPause
ContentResolver.removeStatusChangeListener(mSyncObserverHandle);
当我退出 Activity 时,LeakCanary 报告我的 Activity 被泄露。以下是泄漏跟踪的要点:
* com.sample.android.MyListActivity has leaked:
* GC ROOT android.content.ContentResolver$1.val$callback(anonymous class extends android.content.ISyncStatusObserver$Stub)
* leaks com.sample.android.MyListActivity instance
[ 06-11 15:35:23.123 11823:13392 D/LeakCanary ]
* Reference Key: 1eaf447d-055c-4767-bb3f-56b12c7a4dae
* Device: motorola motorola XT1022 condor_retaildsds
* Android Version: 4.4.4 API: 19 LeakCanary: 1.3.1
* Durations: watch=5029ms, gc=147ms, heap dump=693ms, analysis=15159ms
[ 06-11 15:35:23.123 11823:13392 D/LeakCanary ]
我已经在 API 19 和 22 上进行了测试。我想知道我的代码、leakcanary 或 sdk 是否有问题。
提前致谢!