8

Moja aplikacja umożliwia użytkownikom korzystanie z ich danych i zarządzanie nimi niezależnie od tego, czy są zalogowani. Chociaż, ponieważ jednoznacznie identyfikuję każde urządzenie, chcę zsynchronizować dane od moich anonimowych użytkowników (niezalogowanych) jako dobrze. Tak więc zastanawiałem się, czy w tym przypadku dobrą praktyką jest utworzenie anonimowego konta, ponieważ SyncAdapters działa tylko z kontami.Używanie programu SyncAdapter bez tworzenia konta

Czy należy utworzyć konto dla moich anonimowych użytkowników, czy też powinienem zsynchronizować ich dane za pomocą wątków/AsyncTasks/Loaders? W szczególności, czy istnieje sposób, aby wykonać ContentResolver.requestSync() bez potrzeby posiadania konta?

+1

Polecam używać tej samej procedury synchronizacji dla użytkowników uwierzytelnionych i anonimowych. requestSync wymaga konta. Jeśli chcesz tego użyć, utwórz anonimowe konto. – njzk2

Odpowiedz

5

Korzystanie z narzędzia SyncAdapter/AccountManager w systemie Android to więcej problemów niż jest to warte. Ten konkretny wzorzec najlepiej stosować tylko wtedy, gdy spodziewamy się, że wiele innych aplikacji będzie chciało udostępnić dane Twojego konta (np. Twitter lub Facebook).

Proponuję po prostu napisać własną implementację Service, aby wykonać synchronizację. Możesz użyć usługi AlarmManager, aby powiadomić usługę o okresowej synchronizacji. W przeciwnym razie możesz po prostu zsynchronizować, gdy użytkownik otworzy aplikację, używając podstawowego AsyncTask.

+0

+1 Uważam, że wzorzec jest bardziej restrykcyjny niż pomocny. –

+0

Mogę uwierzyć, że używanie narzędzia SyncAdapter/AccountManager to więcej kłopotów, niż powinno, biorąc pod uwagę, jak typowym zadaniem jest buforowanie reprezentacji jakiegoś zasobu serwera ... ale czy to naprawdę więcej problemów niż pisanie własnej usługi? –