相关疑难解决方法(0)

没有ContentProvider的CursorLoader用法

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

107
推荐指数
4
解决办法
5万
查看次数

android.database.Cursor registerContentObserver

这里是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?

sqlite android

2
推荐指数
1
解决办法
2136
查看次数