Ich verwende einen Synchronisationsadapter in meinem Projekt, der regelmäßig synchronisiert wird. Um das Konto für den Sync-Adapter zu erstellen, verwende ich den folgenden Code.Stoppen Sie den Synchronisationsadapter, um ihn zu initialisieren, wenn Sie addPeriodicSync verwenden
Das Problem, mit dem ich konfrontiert bin, ist, dass dieser Code eine erste Synchronisierung auslöst. In der Dokumentation wurde nicht erwähnt, dass dieser Code die Synchronisierung zunächst ausführen wird.
In der Tat gibt es sogar im Google Sample-Projekt gibt es zusätzlichen Code zum Auslösen einer ersten Synchronisierung, die ich entfernt habe.
Ich habe den Code aus diesem Beispiel verwendet: http://developer.android.com/samples/BasicSyncAdapter/index.html
Auch wenn ich hinzufügen Befehl ContentResolver.cancelSync (Konto, null); Der Synchronisierungsadapter wird weiterhin ausgeführt.
Wie kann ich die Synchronisation des Synchronisationsadapters stoppen? Es sollte zum ersten Mal synchronisiert werden, wenn der Synchronisierungsintervall abgelaufen ist.
Account account = new Account(context.getPackageName(), context.getPackageName());
AccountManager accountManager = (AccountManager) context.getSystemService(Context.ACCOUNT_SERVICE);
if (accountManager.addAccountExplicitly(account, null, null)) {
// Inform the system that this account supports sync
ContentResolver.setIsSyncable(account, context.getPackageName(), 1);
// Inform the system that this account is eligible for auto sync when the network is up
ContentResolver.setSyncAutomatically(account, context.getPackageName(), true);
// Recommend a schedule for automatic synchronization.
// The system may modify this based
// on other scheduled syncs and network utilization.
ContentResolver.addPeriodicSync(account, context.getPackageName(),
Bundle.EMPTY, AppConstants.SYNC_INTERVAL);
}