Warum löst Android ein Google-Konto synchronisieren jedes Mal, wenn ich ein Konto von einem benutzerdefinierten Typ hinzufügen / entfernen?

Ich habe eine App, die mit einem Webdienst verknüpft ist, der AccountManager und Sync verwendet, um Benutzern zu erlauben, sich über die App auf ihrem Konto anzumelden und ihre Daten zu synchronisieren (dies sind benutzerdefinierte Daten, keine Kontakte oder sonstiges, die von Google-Konten verwendet werden). AFAIK, ich mache alles so, wie ich soll Wenn sich der Benutzer über unsere API anmeldet, speichere ich das Konto auf dem Android AccountManager:

AccountManager am = AccountManager.get(context); m.addAccountExplicitly(new Account(username, ACCOUNT_TYPE), account_id, user_data); 

Ich habe ACCOUNT_TYPE definiert, um nur der Paketname der App zu sein, der ausreichen sollte, um ihn von jedem anderen Kontotyp zu unterscheiden.

Sobald das Konto hinzugefügt ist, setze ich es für die automatische Synchronisierung:

 ContentResolver.setSyncAutomatically(account, AUTHORITY, true); ContentResolver.addPeriodicSync(account, AUTHORITY, new Bundle(), SYNC_FREQUENCY_SECONDS); 

Ich habe SYNC_FREQUENCY_SECONDS als 86400 (dh 1 Tag) definiert.

Ähnlich, wenn der Benutzer sich abmeldet, rufe ich gerade ihr Konto von AccountManager ab und rufe removeAccount () auf, um es zu entfernen. Schön und einfach.

Die Synchronisierung erfolgt durch meinen eigenen Code, denn es sind alle benutzerdefinierten Daten, die synchronisiert werden, und das alles funktioniert ganz gut. Allerdings, was mich verrückt macht ist, dass, wenn ich diesen Code verwenden, um ein Konto hinzuzufügen oder zu entfernen (meines eigenen Typs), löst es sofort eine Synchronisierung aller Google-Konten auf dem Gerät aus. Das bedeutet, dass es, bevor es meine Daten synchronisiert, zuerst alle E-Mails, Kalenderdaten, Kontakte, Google Play Magazine, Google+ Daten und Bilder usw. usw. synchronisieren muss. Dies kann einige Minuten dauern, in denen meine App Ist nur geduldig warten, um zu drehen, um Daten zu synchronisieren. Es ist sehr frustrierend, und es wird schwer für meine Benutzer zu verstehen, warum es so lange dauert, bis sie ihre Daten synchronisieren, sobald sie sich anmelden (nicht zu erwähnen, dass bei der Synchronisierung so viel Daten das Telefon eine Tendenz hat zu verlangsamen Bis auf den Punkt der Unempfänglichkeit hinunter).

Bin ich hier etwas falsch? Gibt es etwas in meinem Code, der versehentlich Android erzählt, "Hey, geh und synchronisiere alle deine Google Daten jetzt!"? Oder ist es etwas in der Konten / Sync-Framework von Google, die ich nur zu tun haben?

  • Android AutoSync Laufzeitintervall?
  • Couchdb auf Android
  • Wie hört man den Kontakt, der im Adressbuch eingefügt / aktualisiert / gelöscht ist
  • Wann darf kein Synchronisierungsadapter verwendet werden
  • Kontakt Sync Adapter in Android
  • Wie man Telefonkontakte in Google Mail in Android programmgesteuert unter Verwendung von Google-Kontakten api synchronisiert
  • Android Sync Sqlite
  • Wie bekomme ich meine APP_KEY und SECRET_KEY für Dropbox Sync?
  • One Solution collect form web for “Warum löst Android ein Google-Konto synchronisieren jedes Mal, wenn ich ein Konto von einem benutzerdefinierten Typ hinzufügen / entfernen?”

    Ich denke (obwohl ich bin nicht 100% sicher), dass dies eine energiesparende Funktion ist; Es ist mehr batterieeffizient, eine lange Übertragung zu senden, anstatt mehrere kürzere Übertragungen, weil das Radio in einem Standby-Power-Zustand für einige Zeit nach dem Ende einer Übertragung bleibt und so das Senden einer einzigen langen Übertragung vermeidet, im Standby zu bleiben (im Wesentlichen verschwenden Macht) mehr als einmal. Also ich vermute, dass die Synchronisierungsinfrastruktur versucht, so viel Synchronisierung zusammenzubringen, wie es möglich ist.

    Wenn die Sorge die Latenz der Erst-Synchronisation ist, könnte man manuell eine Synchronisation für die Erst-Synchronisation mit einer unmittelbaren Zeit zusätzlich zu der periodischen automatischen Synchronisation anfordern?

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.