Android 调用unregisterContentObserver()后,Content Observer对象会发生什么变化?
使用Android 调用unregisterContentObserver()后,Content Observer对象会发生什么变化?,android,android-contentprovider,android-contentresolver,contentobserver,Android,Android Contentprovider,Android Contentresolver,Contentobserver,使用ContentProvider管理应用程序的数据访问时,可以使用ContentObserver监视ContentProvider中的更改 要创建ContentObserver,我们需要创建一个新对象,通常在Activity的onResume()方法中。然后注册ContentObserver对象,以便在给定内容URI标识的数据发生更改时获取回调 private Google_AR_Observer googleARObserver = null; @Override public v
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);
}
最后,在活动的onPause()方法中,取消注册以前注册的不再需要的ContentObserver
@Override
public void onPause() {
super.onPause();
getContentResolver().unregisterContentObserver(googleARObserver);
}
我的问题是:取消注册后ContentObserver会发生什么?它被销毁了吗?ContentObserver没有什么特别之处——它是一个基本的Java对象。因此,如果不再有对它的引用,垃圾收集器将负责销毁它。ContentObserver没有什么特别之处——它是一个基本的Java对象。因此,如果没有更多对它的引用,垃圾收集器将负责销毁它。如果您查看源代码,尤其是
ContentObserver
类,您将发现一个方法releaseContentObserver()
,当您注销任何观察者时将调用该方法。此方法在内部保存contentObserver
对象的引用(在其他内部类Transport
中),该对象被分配给null值。因此,基本上你可以说,只要你注销它,它就会被销毁。如果你查看源代码,尤其是ContentObserver
类,你会发现一个方法releaseContentObserver()
,当你注销任何观察者时,它会被调用。此方法在内部保存contentObserver
对象的引用(在其他内部类Transport
中),该对象被分配给null值。因此,基本上你可以说,只要你注销它,它就被销毁了。它只是另一个Java类,当没有对该类的引用时,它被销毁。它只是另一个Java类,当没有对该类的引用时,它被销毁