2013-05-29 1 views
1

Я новичок в Android и в настоящее время пытаюсь преобразовать свое приложение, чтобы он использовал Loaders для взаимодействия с базой данных, чтобы я мог работать в фоновом режиме.Является ли загрузчик только для чтения данных из базы данных, а не для обновления и удаления данных?

У меня уже есть несколько методов, которые запрашивают и обновляют базу данных, поэтому я собираюсь переместить их все в метод OnCreateLoader.

Единственная проблема заключается в том, что метод OnCreateLoader ожидает возврата CursorLoader, и CursorLoader автоматически вызывает метод запроса ContentResolver.

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

Как я могу получить CursorLoader для вызова обновлений или вставки методов ContentResolver?

Или я не должен использовать загрузчик для этих запросов?

ответ

4

Loader s предназначены для чтения данных - 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 
2

На данный момент CursorLoader поддерживает только чтение данных. Если вы хотите обновить данные, вы можете захотеть просмотреть свой собственный AsyncTaskLoader.

Или, выйдите CWAC LoaderEx который, кажется, сделал все это для вас.