2014-07-16 9 views
12

Myślę, że dobrze wiadomo, że na liście najgorszych udokumentowanych tematów, SyncAdapter świeci jasno jak diament! acording do http://udinic.wordpress.com/2013/07/24/write-your-own-android-sync-adapter/ SyncAdapter przynosi 4 główne korzyści: A) wydajności akumulatora B) Interfejs C) świadomość zawartość d) mechanizm ponownych prób;Alternatywy SyncAdapter

jeśli w żadnym przypadku nie potrzeba do zsynchronizować DB sqlite ze zdalnym SQL DB, a żaden z tych świadczeń jest potrzebne, jakie inne alternatywy są tam ** ** łatwo jest zarządzać usługę w - między DB z php, zrobiłem to dla wysyłania części procesu synchronizacji, ale dla części pobierania czuję się głupio, jeśli używam metody wypełniania zapytań, ponieważ w niedalekiej przyszłości zdalne db mogą stać się większe i większe. Jedyne rozwiązanie, które przychodzi moim zdaniem jest napisanie własnej aktywności/usługi synchronizacji, ale nie wiem, jak uzyskać dostęp do ostatniej daty aktualizacji do SQLite db/table (inne niż określenie daty _ w każdej tabeli), aby sprawdzić, czy konieczne jest ponowne zsynchronizowanie? Czuję, że moja głowa jest pomiędzy dwoma miejscami!

Odpowiedz

1

Miksujesz problem. 1- Czy naprawdę trzeba użyć adaptera synchronizacji? Więc jeśli tak, będziesz mieć wywołanie synchronizacji na stole i nie ma potrzeby zapisywania daty ostatniego połączenia. Android zrobi to za Ciebie. Po prostu skonfiguruj poprawnie zegary synchronizujące. Drugim rozwiązaniem jest wykonanie prostego zadania AsyncTask i wykonanie swojej pracy tutaj. (Na przykład, jeśli robisz to tylko raz w tygodniu)

Jeśli chodzi o problem z datami, chodzi o to, że jeśli naprawdę chcesz wiedzieć, czy jesteś na bieżąco, masz wiele rozwiązań. Na swoim serwerze zapisz datę lub zwiększ liczbę wersji i porównaj je, gdy zadzwonisz z urządzenia do synchronizacji, aby dowiedzieć się, czy musisz zsynchronizować, czy nie. Innym rozwiązaniem jest po prostu odświeżenie bazy danych wszędzie tam, gdzie jest ona aktualizowana (na przykład masz małą bazę danych, więc nie musisz tworzyć zoptymalizowanego systemu).

Miałem ten sam problem kilka miesięcy temu i miałem nadzieję, że ci to pomogło.

1

może warto rozważyć ten artykuł:

https://www.bignerdranch.com/blog/choosing-the-right-background-scheduler-in-android/

To wyjaśnia, w jaki sposób SyncAdapter jest dobrym wyborem w wyniku mniejszego dogodnych opcji gdy potrzeby wykorzystać akumulator dobrze i wychodzić do sieć.

Nie polecam Asyntask przypadku tych powodów: http://blog.danlew.net/2014/06/21/the-hidden-pitfalls-of-asynctask/

Jeśli SyncAdapter jest naprawdę nie działa dla ciebie jest najlepsze praktyki z Androidem, która sugeruje użycie IntentService i WakefulBroadcastReceiver z częściową blokadą wake gdy robi długo- uruchamianie operacji. Mówi, że "platforma Android oferuje kilka klas, które pomagają odciążyć operacje na osobny wątek działający w tle. Najbardziej użytecznym z nich jest IntentService." https://developer.android.com/training/run-background-service/index.html https://developer.android.com/training/scheduling/wakelock.html

tam musi być jakaś prawda do niego, ponieważ napisałem.