SQLite транзакции с ContentProvider шаблона Google IO REST?
Я пытаюсь реализовать вторую модель клиента REST, представленную Вирджилом Добянским на этом видео:
http://developer.android.com/videos/index.html
Это диаграмма высокого уровня для модели, о которой я говорю:
Я реализовал все как предложено, но у меня есть сложная модель базы данных SQLite с большим количеством таблиц, и мне нужно использовать транзакции для обновления моих локальных данных новыми данными, полученными с сервера (шаг 7 на рисунке).
Есть ли какие-либо предложения, которые вы могли бы сделать, чтобы помочь мне реализовать транзакционный ContentProvider для этого случая?
Некоторые из вас могут предложить мне вместо этого использовать сырой SQLite, но в этом случае я не воспользуюсь преимуществами ContentObservers, managedQueries и синхронизации доступа к базе данных, предоставляемыми ContentProvider.
Любая помощь будет оценена.
2 ответа
Поскольку у вас нет доступа к 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, чтобы указать, что транзакция должна быть выполнена.
Вы можете реализовать пользовательскую функцию в вашем ContentProvider, которая выполняет необходимые транзакции. Затем вы можете вызвать эти функции с помощью функции call() в вашем процессоре.