这里是registercontentobserver的描述:
抽象void registercontentobserver(contentobserver观察员)
注册一个观察者,当支持此光标的内容发生更改时调用该观察者。
这是我的代码:

Cursor cursor = (SQLiteCursor)dataBase.query(projection, null, null, null);
cursor .registerContentObserver(new ChangeObserver());

private class ChangeObserver extends ContentObserver {
    public ChangeObserver() {
        super(new Handler());
    }

    @Override
    public boolean deliverSelfNotifications() {
        return true;
    }

    @Override
    public void onChange(boolean selfChange) {
        Log.d(Constants.TAG, "ChangeObserver.onChange");
    }
}

但是,当我更改数据库(delete/update/add row)时,将永远不会调用contentobserver的onchange方法。
所以我想知道什么情况会触发ContentObserver?

最佳答案

基本上,这是文档中的一个问题,正如this post中所解释的,并感谢@mikerowhl做了这项研究!
它可以归结为大部分用来描述与contentproviders/contentresolvers一起工作的游标行为的文档。如果不涉及这些类,并且没有按照@renard的建议进行操作,那么contentobserver将不会得到回调。不管文件上怎么说。
因此,原始的sqlitecursor与那些花哨的游标有点“差关系”…:)

10-08 14:26