您好我正在尝试使用以下代码。内容解析器无法使用此功能。任何人都可以提出想法
getContentResolver().registerContentObserver(MyContentProvider.CONTENT_URI,true, new ContentObserver(new Handler()){
@Override public void onChange( boolean selfChange){
showDialog();
}
@Override
public void onChange(boolean selfChange, Uri uri) {
// Handle change.
showDialog();
}
});
提前致谢
答案 0 :(得分:7)
ContentObserver
仅适用于在提供商内容发生变化时调用one of the notifyChange()
methods on a ContentResolver
的ContentProvider
。如果ContentProvider
未致电notifyChange()
,则ContentObserver
将不会收到有关更改的通知。
答案 1 :(得分:6)
我遇到的问题是ContentObserver
方法从未被调用,因为Handler
的{{1}}的{{1}}被初始化不正确。在致电Looper
后,我忘了致电Looper.loop()
...这会导致Looper.prepare()
不消耗事件并调用Looper
。
解决方案是为ContentObserver.onChange()
正确创建和初始化Handler
和Looper
:
ContentObserver
useful SO post about controlling which thread ContentObserver.onChange()
is executed on.