Ich habe eine Anwendung mit einer SyncAdapter
. Zusätzlich zu der normalen Synchronisation auslösen ich eine USER_READ
Ereignis, mit dem ich eine Bundle
an den Adapter nur passieren, ohne es zu persistierenden:Wie lange werden Pakete vom SyncManager beibehalten?
Bundle settingsBundle = new Bundle();
settingsBundle.putString(SyncAdapter.USER_READ, uid);
ContentResolver.requestSync(account, authority, settingsBundle);
Dies wird in Zukunft richtig irgendwann meine Synchronisationsroutine aufrufen. Jeder uid
, der in Bundle
gesetzt ist, löst seinen eigenen Lauf aus und alles wird wie erwartet synchronisiert.
Wenn jetzt die Verbindung schlecht ist, oder die Anforderung mal, dann setze ich einen weichen Fehler:
syncResult.stats.numIoExceptions += 1;
, die die Anforderung verursacht später wiederholt werden. Das funktioniert auch gut.
Wie lange diese SyncRequests/Bundles beibehalten werden?
Die Dokumentation besagt, dass das Auftreten eines Soft-Fehlers einen exponentiellen Backoff verursacht und dass die Synchronisation einige Zeit später ausgeführt wird.
- Wird es irgendwann abgebrochen? Nach mehreren weichen Fehlern?
- Wird es nach einem Neustart des Geräts erneut in die Warteschlange eingereiht?
die Verbindung ist schlecht, und die Synchronisation schlägt fehl Bei mehrfach mit Soft-Fehlern: mich würde ich gerne wissen, ob nur eine Synchronisationsanforderung Einreihen genug ist, oder wenn ich bieten irgendeine Art von Beharrlichkeit seiner Anforderungen, um sicherzustellen, irgendwann gesendet.
Es hängt von Ihrer Anforderung ab, dass es sein wird Wenn das System sendet eine Netzwerkmeldung, in regelmäßigen Abständen, auf Anforderung wie nach einem Neustart des Geräts lesen Sie http://developer.android.com/training/sync-adapters /running-sync-adapter.html –
@WaqasAhmed Danke, ja. Ich kenne die Dokumentation. Ich frage mich nur, wie lange diese Anfragen andauern werden, besonders wenn ich nicht nur * Full Sync * verwende, sondern auch die Daten aus den Bundles brauche. –