1

我是一名 Android 新手,目前正在尝试转换我的应用程序,以便它使用 Loaders 与数据库交互,以便我可以在后台工作。

我已经有一些查询和更新数据库的方法,所以我正在考虑将它们全部移到 OnCreateLoader 方法中。

唯一的问题是 OnCreateLoader 方法需要返回一个 CursorLoader 并且 CursorLoader 会自动调用 ContentResolver 的查询方法。

public Loader<Cursor> onCreateLoader(int id, Bundle args) {

我应该如何让 CursorLoader 调用 ContentResolver 的更新或插入方法?

或者我不应该对这些查询使用加载器?

4

2 回答 2

4

Loaders 用于读取数据 - AsyncQueryHandler是专为轻松插入/更新/删除而设计的内置类:

new AsyncQueryHandler(context.getContentResolver()){
    @Override
    onInsertComplete(int token, Object cookie, Uri uri)
    {
        // Insert completed successfully
    }
}.startInsert(0,    // token, used to distinguish inserts in onInsertComplete
              null, // cookie, used to distinguish inserts in onInsertComplete 
              uri,  // URI to update
              initialValues); // ContentValues to pass to your ContentProvider
于 2013-05-29T15:57:07.810 回答
2

截至目前,CursorLoader仅支持读取数据。如果您想更新数据,您可能需要考虑编写自己的AsyncTaskLoader

或者,查看CWAC LoaderEx,它似乎已经为您完成了所有这些工作。

于 2013-05-29T15:03:15.950 回答