Android SDK文档说该startManagingCursor()方法已被删除:
不推荐使用此方法.改为使用新的CursorLoader类和LoaderManager; 这也可以通过Android兼容包在旧版平台上使用.此方法允许活动根据活动的生命周期为您管理给定的Cursor生命周期.也就是说,当活动停止时,它将自动调用给定Cursor上的deactivate(),稍后重新启动它将为您调用requery().当活动被销毁时,所有托管游标将自动关闭.如果您的目标是HONEYCOMB或更高版本,请考虑改为使用LoaderManager,可通过getLoaderManager()获取
所以我想用CursorLoader.但是当我在构造函数中需要URI时,如何使用自定义CursorAdapter和不使用它?ContentProviderCursorLoader
android cursor android-contentprovider android-loadermanager android-cursorloader
这里是registerContentObserver的描述:
abstract void registerContentObserver(ContentObserver observer)
注册在支持此游标的内容发生更改时调用的观察者.
这是我的代码:
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");
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我更改数据库(删除/更新/添加行)时,将永远不会调用ContentObserver的onChange方法.所以我想知道什么情况会触发ContentObserver?