5

estoy tratando de poner en práctica el segundo modelo cliente REST presentado por Virgilio Dobjanschi en este video:Transacciones de SQLite con ContentProvider del patrón RESTO de Google IO?

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

Este es el diagrama de alto nivel para el modelo que estoy hablando:

enter image description here

Implementé todo según lo sugerido, pero tengo un modelo de base de datos SQLite complejo con muchas tablas y necesito usar transacciones para actualizar mis datos locales con datos nuevos recuperados del servidor (paso 7 en la imagen).

¿Hay alguna sugerencia que pueda hacer para ayudarme a implementar un ContentProvider transaccional para este caso?

Algunos de ustedes pueden sugerirme que use SQLite sin formato en su lugar, pero de esta manera no aprovecharé las ventajas de ContentObservers, managedQueries y la sincronización de acceso a la base de datos proporcionada por ContentProvider.

Cualquier ayuda sería apreciada.

+0

Me encanta ese video por cierto. Realmente me ayudó a entender REST. –

Respuesta

0

Puede implementar una función personalizada en su ContentProvider que ejecute las transacciones necesarias. Luego puede llamar a esos funcitons utilizando la función call() en su procesador.

+0

Gracias Kurtis, podría solucionar el problema, a menos que solo sea compatible con dispositivos con SDK> = 11. Mi aplicación está destinada a dispositivos con Android 1.6 o superior. = ( –

2

Dado que no tiene acceso a la API de nivel 11, puede hacerlo en su lugar. Digamos que usted quiere hacer esto transacción en su método de actualización:

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 
    } 
} 

En este caso, special_uri es un URI que se utiliza para indicar que vas a tener que hacer sus cosas especiales transacción. En otras palabras, estamos usando el URI aquí para indicar que se debe realizar una transacción.

+0

Ya consideré utilizar indicadores en el URI para eso, pero espero que haya un enfoque más elegante. Estoy seguro de que alguien aquí en SO ya se ha enfrentado a esto. Gracias de todos modos. –

+0

No tiene para usar banderas. En realidad, podría tener un URI diferente. Esto no es tan poco elegante porque sigue siendo RESTful. –

Cuestiones relacionadas