2013-07-26 9 views
6

Czy mógłbyś powiedzieć mi, jaki jest prawidłowy sposób wykonywania zadań synchronizacji w systemie Android (na przykład, jeśli mam około 5 zadań)?
Uwaga! Job synchronizacji Znaczy wątek, który działa w tle i wysyła jakieś dane (np Analytics) za pośrednictwem usługi internetowej ...Zadania w tle w Androidzie do synchronizacji z usługą sieciową

Aby uzyskać więcej informacji prosimy o zapoznanie się dokładniejszy opis:

Mam zadanie zaimplementować niektóre zadania w tle, które zsynchronizują niektóre dane z restrykcyjną usługą sieciową. Niektóre zadania powinny być zaplanowane okresowo z określonym opóźnieniem. Jeśli nie ma połączenia z Internetem, po prostu buforuję dane, a później, gdy ponownie się pojawi, próbuję uruchomić zadania. Biorąc pod uwagę, że tworzenie nowych wątków jest dość kosztowne, a szczególnie na rozwój mobilny, używam buforowanej puli wątków (ExecutorService) i za każdym razem, gdy jakieś działania są wymagane do przetworzenia, próbuję ponownie użyć wątków. Nie używam AsyncTask, ponieważ zastąpiłem to tą usługą Executora (Executors.newCachedTreadPool) i jest dla mnie wygodna, ponieważ nie potrzebuję tworzyć wielu AsyncTasks, ponieważ ponownie wykorzystuję wątki z ES ... W celu wsparcia zaplanowane zadania, korzystam z innej puli wątków (ScheduledExecutorService) i używam opcji Callable, ponieważ potrzebuję zobaczyć wynik wykonania. Mam tutaj złożoną logikę ... Tak więc, kiedy konkretna akcja zostanie wykonana w aplikacji, pula pierwszego wątku (jest podobna do AsyncTask) działa jak AsyncTask, zaletą jest to, że nie tworzę nowych wątków ale ja je odbieram. Nie spowoduje to zablokowania głównego wątku interfejsu użytkownika. Przekaże on zaplanowanego wykonawcę, który wykona swoje zadanie. To rozwiązanie działa. I brzmi dobrze dla mnie, gdy przychodzę od strony serwera, ale chciałbym wiedzieć, jak to musi być zrobione poprawnie na Androidzie? Czy jest to zbyt wyrafinowane w przypadku aplikacji mobilnej? Merci, Serge

Odpowiedz

10

Użyj adaptera synchronizacji. Zobacz http://developer.android.com/training/sync-adapters/index.html. Adapter synchronizacji działa w tle, jest zarządzany przez system i planowany tak, aby synchronizacja nie marnowała energii baterii. Co najważniejsze, system automatycznie wykryje połączenie sieciowe i w razie potrzeby umieści w kolejce kartę synchronizacji. Jeśli chcesz, możesz użyć wielu adapterów synchronizacji.

Należy zauważyć, że chociaż wydaje się być, że adaptery synchronizacji potrzebują dostawcy treści i wystawcy uwierzytelnienia, tak naprawdę nie.

+0

Dziękuję Joe, twoja odpowiedź jest bardzo pomocna. Przeczytałem artykuł i zamierzam użyć adapterów Sync. Wygląda na to, że tego właśnie szukałem ... Wielkie dzięki. – Serge

Powiązane problemy