使用ContentProvider
管理应用程序的数据访问时,可以使用ContentObserver
来监控ContentProvider
中的更改。
要创建ContentObserver
,我们需要创建一个新对象,通常在Activity的onResume()方法中。然后注册ContentObserver
对象,以便在给定内容URI标识的数据发生更改时获得回调。
private Google_AR_Observer googleARObserver = null;
@Override
public void onResume() {
super.onResume();
googleARObserver = new Google_AR_Observer(this);
getContentResolver().registerContentObserver(
CONTENT_URI,
true,
googleARObserver);
}
最后,在Activity的onPause()方法中,不再需要先前注册的ContentObserver
。
@Override
public void onPause() {
super.onPause();
getContentResolver().unregisterContentObserver(googleARObserver);
}
我的问题是:取消注册后ContentObserver会发生什么?它被摧毁了吗?
答案 0 :(得分:2)
ContentObserver没有什么特别之处 - 它是一个基本的Java对象。因此,如果没有更多的引用,垃圾收集器将负责销毁它。
答案 1 :(得分:1)
如果您查看源代码,尤其是ContentObserver
类,您将找到一个方法releaseContentObserver()
,当您取消注册任何观察者时都会调用该方法。此方法在内部保存contentObserver
对象(在其他内部类Transport
内)的引用,该引用被赋予 null 值。所以基本上你可以在注销后立即将其销毁
答案 2 :(得分:1)
它只是另一个Java类,当没有对类的引用时会被销毁。