Android 是否在加载程序中注销/注销ContentObserver以避免内存泄漏

Android 是否在加载程序中注销/注销ContentObserver以避免内存泄漏,android,android-fragments,memory-leaks,android-loadermanager,android-loader,Android,Android Fragments,Memory Leaks,Android Loadermanager,Android Loader,我有许多加载器类来扩展加载器类。我在那个班有一名观察员。 现在我在我的一些加载程序中使用MatrixCursor,我正在使用代码注册这些加载程序: contentResolver.registerContentObserver(uri, true, mObserver); cursor.registerContentObserver(mObserver); 当片段/活动暂停时,是否必须从加载程序中注销content observer以避免内存泄漏? 博客文章指出,必须注销内容观察者,否则活动/

我有许多加载器类来扩展加载器类。我在那个班有一名观察员。 现在我在我的一些加载程序中使用MatrixCursor,我正在使用代码注册这些加载程序:

contentResolver.registerContentObserver(uri, true, mObserver);
cursor.registerContentObserver(mObserver);
当片段/活动暂停时,是否必须从加载程序中注销content observer以避免内存泄漏? 博客文章指出,必须注销内容观察者,否则活动/片段可能不会被垃圾收集

当我们传递活动上下文或在活动/片段级别工作时,这一点是有效的。
但我发现加载器在内部保留应用程序上下文对象的引用。这意味着不存在内存泄漏的可能性。那么所有注册/注销obsevers的代码真的有必要吗?

实际上会保留一组有限的加载程序(没有重复)。同时,取消注册可能是一个好主意(尽管cursorloader没有这样做),因为观察者存储在一个普通的ArrayList(而不是with)中。这样做的最佳位置是(也许是)加载程序不应该提供进一步的更改通知。将在适当的时间调用这些函数。

不需要自定义加载程序:请参阅我知道游标加载程序,但我们必须将自己的逻辑添加到游标加载程序的异步任务中,这就是我们编写自己的加载程序的原因。代码基于游标加载程序。我只是有关于内存泄漏的问题。仍然不知道为什么要注册ContentObserver?谁将执行
notifyChange
?在特定uri的插入和更新操作期间,通过ContentProvider执行notifyChange。那么,为什么要在自定义加载程序中使用它:
contentResolver.registerContentObserver(uri,true,mObserver)