ContentObserver无法在android中工作



嗨,我正在尝试使用以下代码。内容解析程序无法处理此问题。有人能说出的想法吗

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

提前感谢

ContentObserver仅与ContentProvider一起工作,后者在提供程序的内容发生更改时调用ContentResolver上的notifyChange()方法之一。如果ContentProvider不调用notifyChange(),则不会向ContentObserver通知更改。

问题

我遇到的问题是ContentObserver.onChange()方法从未被调用,因为ContentObserverHandlerLooper初始化不正确。我打了Looper.prepare()后忘了打Looper.loop()。。。这导致CCD_ 14不消耗事件并调用CCD_。

解决方案

解决方案是为ContentObserver:正确创建和初始化HandlerLooper

// 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);

关于控制在哪个线程上执行ContentObserver.onChange()的有用SO文章。

最新更新