这里是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与那些花哨的游标有点“差关系”…:)