ContentObserver 在 android 中不工作

ContentObserver not working in android

您好,我正在尝试使用以下内容 code.The 内容解析器无法与 this.Can 任何人提供想法

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

提前致谢

A ContentObserver 仅适用于 ContentProvider,当提供程序的内容发生变化时调用 one of the notifyChange() methods on a ContentResolver。如果 ContentProvider 没有调用 notifyChange()ContentObserver 将不会收到有关更改的通知。

问题

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

解决方案

解决方案是为 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);

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