2011-10-19 10 views
5

Staram się realizować drugi model klient REST przedstawiony przez Virgil Dobjanschi na tym filmie:Transakcje SQLite z dostawcą Content ID aplikacji Google IO ContentTrovider?

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

ten schemat wysokiego poziomu dla modelu mówię:

enter image description here

Zaimplementowałem wszystko zgodnie z sugestią, ale mam złożony model bazy danych SQLite z dużą ilością tabel i muszę użyć transakcji do aktualizacji moich lokalnych danych za pomocą zupełnie nowych danych pobranych z serwera (krok 7 na zdjęciu).

Czy są jakieś sugestie, które możesz wprowadzić, aby pomóc mi wdrożyć transakcyjnego dostawcę treści w tej sprawie?

Niektórzy z was mogą zaproponować mi użycie surowego SQLite zamiast tego, ale w ten sposób nie będę korzystać z zalet ContentObservers, managedQueries i dostępu do baz danych udostępnianych przez ContentProvider.

Każda pomoc zostanie doceniona.

+0

Uwielbiam to wideo przy okazji. To naprawdę pomogło mi zrozumieć REST. –

Odpowiedz

0

Możesz zaimplementować funkcję niestandardową w swoim dostawcy treści, który wykonuje niezbędne transakcje. Następnie możesz wywoływać te funkcje za pomocą funkcji call() w twoim procesorze.

+0

Dziękuję Kurtis, może rozwiązać problem, chyba że jest obsługiwany tylko na urządzeniach z SDK> = 11. Moja aplikacja jest przeznaczona dla urządzeń z Androidem 1.6 lub nowszym. = ( –

2

Ponieważ nie masz dostępu do interfejsu API poziomu 11, możesz to zrobić zamiast tego. Powiedzmy, że chcesz zrobić te rzeczy transakcji w sposobie aktualizacji:

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

W tym przypadku special_uri jest uri użyć, aby wskazać, że masz zamiar trzeba zrobić specjalny materiał transakcji. Innymi słowy, używamy tutaj identyfikatora URI, aby wskazać, że transakcja musi zostać wykonana.

+0

Rozważałem już używanie flag w URI dla tego, ale spodziewam się, że istnieje bardziej eleganckie podejście, jestem pewien, że ktoś tutaj w SO już się z tym zmierzył.Dziś jeszcze raz dziękuję –

+0

używać flag. Możesz rzeczywiście mieć inny identyfikator URI. To nie jest tak nieeleganckie, ponieważ wciąż jest RESTOWN. –

Powiązane problemy