android.database.Cursor提供了两个接口来监听数据库的变化;
其对应的取消监听接口如下:
abstract void |
registerContentObserver(
ContentObserver observer)
Register an observer that is called when changes happen to the content backing this cursor.
|
abstract void |
registerDataSetObserver(
DataSetObserver observer)
Register an observer that is called when changes happen to the contents of the this cursors data set, for example, when the data set is changed via
requery() ,
deactivate() , or
close() .
|
abstract void |
unregisterContentObserver(
ContentObserver observer)
Unregister an observer that has previously been registered with this cursor via
registerContentObserver(ContentObserver) .
|
abstract void |
unregisterDataSetObserver(
DataSetObserver observer)
Unregister an observer that has previously been registered with this cursor via
registerContentObserver(ContentObserver) .
|
Cursor还提供了重新查询的接口:
Activity还提供了对Cursor进行管理的机制:
public void startManagingCursor (Cursor c)
Since: API Level 1
This method allows the activity to take care of managing the given Cursor's lifecycle
for you based on the activity's lifecycle. That is, when the activity is stopped
it will automatically call deactivate() on the given Cursor,
and when it is later restarted it will call requery() for you.
When the activity is destroyed, all managed Cursors will be closed automatically.
参数
c The Cursor to be managed.
public final Cursor managedQuery (Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
Since: API Level 1
Wrapper around query(android.net.Uri, String[], String, String[], String) that gives the resulting Cursor to call startManagingCursor(Cursor) so that the activity will manage its lifecycle for you.
参数
uri The URI of the content provider to query.
projection List of columns to return.
selection SQL WHERE clause.
selectionArgs The arguments to selection, if any ?s are pesent
sortOrder SQL ORDER BY clause.
返回
* The Cursor that was returned by query().
注意:managedQuery就是查询了再调用了startManagingCursor,让Activity对Cursor进行管理。
abstract boolean |
requery()
This method is deprecated. Don't use this. Just request a new cursor, so you can do this asynchronously and update your list view once the new cursor comes back.
|
public void startManagingCursor (Cursor c)
Since: API Level 1
This method allows the activity to take care of managing the given Cursor's lifecycle
for you based on the activity's lifecycle. That is, when the activity is stopped
it will automatically call deactivate() on the given Cursor,
and when it is later restarted it will call requery() for you.
When the activity is destroyed, all managed Cursors will be closed automatically.
参数
c The Cursor to be managed.
public final Cursor managedQuery (Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
Since: API Level 1
Wrapper around query(android.net.Uri, String[], String, String[], String) that gives the resulting Cursor to call startManagingCursor(Cursor) so that the activity will manage its lifecycle for you.
参数
uri The URI of the content provider to query.
projection List of columns to return.
selection SQL WHERE clause.
selectionArgs The arguments to selection, if any ?s are pesent
sortOrder SQL ORDER BY clause.
返回
* The Cursor that was returned by query().
注意:managedQuery就是查询了再调用了startManagingCursor,让Activity对Cursor进行管理。
Cursor还提供一个对数据变化进行监听的接口
abstract void |
setNotificationUri(
ContentResolver cr,
Uri uri)
Register to watch a content URI for changes.
|
关于
setNotificationUri()函数的更多内容请参考《
ContentProvider》