ContentObserver在android中不起作用

时间:2015-03-22 18:46:36

标签: android contentobserver

您好我正在尝试使用以下代码。内容解析器无法使用此功能。任何人都可以提出想法

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();
    }
});

提前致谢

2 个答案:

答案 0 :(得分:7)

ContentObserver仅适用于在提供商内容发生变化时调用one of the notifyChange() methods on a ContentResolverContentProvider。如果ContentProvider未致电notifyChange(),则ContentObserver将不会收到有关更改的通知。

答案 1 :(得分:6)

问题

我遇到的问题是ContentObserver方法从未被调用,因为Handler的{​​{1}}的{​​{1}}被初始化不正确。在致电Looper后,我忘了致电Looper.loop() ...这会导致Looper.prepare()不消耗事件并调用Looper

解决方案

解决方案是为ContentObserver.onChange()正确创建和初始化HandlerLooper

ContentObserver

useful SO post about controlling which thread ContentObserver.onChange() is executed on.