加载程序仅用于从数据库读取数据而不用于更新和删除数据吗?

时间:2013-05-29 14:40:52

标签: android loader

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

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

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

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

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

或者我不应该使用Loader进行查询?

2 个答案:

答案 0 :(得分:4)

Loader用于读取数据 - 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

答案 1 :(得分:2)

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

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