我是Android新手,目前正在尝试转换我的应用,以便它使用Loaders与数据库进行交互,以便我可以在后台工作。
我已经有一些查询和更新数据库的方法,所以我想将它们全部移到OnCreateLoader方法。
唯一的问题是OnCreateLoader方法需要返回CursorLoader,而CursorLoader会自动调用ContentResolver的查询方法。
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
我应该如何让CursorLoader调用ContentResolver的更新或插入方法?
或者我不应该使用Loader进行查询?
答案 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似乎已经为您完成了所有这些。