SQLite транзакции с ContentProvider шаблона Google IO REST? - PullRequest
5 голосов
/ 20 октября 2011

Я пытаюсь реализовать вторую модель клиента REST, представленную Вирджилом Добянским на этом видео:

http://developer.android.com/videos/index.html#v=xHXn3Kg2IQE

Это диаграмма высокого уровня для модели, о которой я говорюо:

enter image description here

Я реализовал все как предложено, но у меня есть сложная модель базы данных SQLite с большим количеством таблиц, и мне нужно использовать транзакции для обновления моих локальных данных новыми даннымиполучено с сервера (шаг 7 на рисунке).

Есть ли какие-либо предложения, которые вы могли бы сделать, чтобы помочь мне реализовать транзакционный ContentProvider для этого случая?

Некоторые из вас могут предложить мне использоватьвместо этого - сырой SQLite, но в этом случае я не буду использовать преимущества ContentObservers, managedQueries и синхронизации доступа к базе данных, предоставляемые ContentProvider.

Любая помощь будет принята.

Ответы [ 2 ]

2 голосов
/ 20 октября 2011

Поскольку у вас нет доступа к API уровня 11, вы можете сделать это вместо этого.Допустим, вы хотите выполнить эту транзакцию в своем методе обновления:

final Cursor update(Uri uri, ContentValues values, String where, String[] selectionArgs)
{

   if(uri == uri1){
     //do stuff you normally do
   }
   //other uri stuff
   ...
   else if(uri == special_uri){
     //do your transaction stuff here
   }
}

В этом случае special_uri - это URI, который вы используете, чтобы указать, что вам понадобится выполнить свою специальную транзакцию.,Другими словами, мы используем здесь URI, чтобы указать, что транзакция должна быть выполнена.

0 голосов
/ 20 октября 2011

Вы можете реализовать пользовательскую функцию в вашем ContentProvider, которая выполняет необходимые транзакции.Затем вы можете вызывать эти функции с помощью функции call () в вашем процессоре.

...