ContentObserver在android中不起作用

V I*_*S H 3 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();
    }
});
Run Code Online (Sandbox Code Playgroud)

提前致谢

Com*_*are 7

一个ContentObserver只适用于一个ContentProvider调用的一个notifyChange()上一个方法ContentResolver时提供的内容发生变化.如果ContentProvider未调用notifyChange(),ContentObserver则不会通知有关更改.


Eri*_*ric 6

问题

我遇到的问题是,该ContentObserver.onChange()方法从来没有得到所谓的,因为ContentObserverHandlerLooper不当初始化.我打电话Looper.loop()后忘了打电话Looper.prepare()......这导致了Looper不消耗的事件和调用ContentObserver.onChange().

解决方案是正确创建和初始化a HandlerLooperfor ContentObserver:

// creates and starts a new thread set up as a looper
HandlerThread thread = new HandlerThread("MyHandlerThread");
thread.start();

// creates the handler using the passed looper
Handler handler = new Handler(thread.getLooper());

// creates the content observer which handles onChange on a worker thread
ContentObserver observer = new MyContentObserver(handler);
Run Code Online (Sandbox Code Playgroud)

关于控制ContentObserver.onChange()执行哪个线程的有用的SO帖子.