我已按照Google样本中的BasicSyncAdapter示例进行操作,我想知道如果我comment out the call to addPeriodicSync()
function in the code,我们甚至会创建默认的定期同步(同步间隔86400秒或24小时)。
我找不到创建SyncAdapter的任何文档,并且存根代码(SyncService,Authenticator帐户等)也会创建具有该默认同步间隔的周期性同步。
我的问题:是否可以创建没有默认定期同步的SyncAdapter?
感谢。
BTW,这就是我检测周期性同步的方法。
java.util.List<PeriodicSync> periodicSyncsList = ContentResolver.getPeriodicSyncs(myaccount, CONTENT_AUTHORITY);
Log.d(TAG, "Number of syncs in the periodicSyncsList = " + periodicSyncsList.size());
for (PeriodicSync p : periodicSyncsList) {
Log.d(TAG, p.toString());
}
答案 0 :(得分:1)
我知道现在有点晚了,但是我希望这个答案可以对某人有所帮助。
我在本文http://blog.udinic.com/2013/07/24/write-your-own-android-sync-adapter的“自动同步”部分中发现,setSyncAutomatically方法将隐式地将定期更新设置为24h。
因此,解决问题的方法只是将以下方法调用中的最后一个参数更改为false。
ContentResolver.setSyncAutomatically(account, CONTENT_AUTHORITY, false);
我对方法调用顺序有类似的问题。这将导致定期同步间隔设置为SYNC_FREQUENCY的值。
ContentResolver.setSyncAutomatically(account, CONTENT_AUTHORITY, true);
ContentResolver.addPeriodicSync(account, CONTENT_AUTHORITY, new Bundle(),SYNC_FREQUENCY);
但是此方法的调用顺序将导致24小时的定期同步间隔。
ContentResolver.addPeriodicSync(account, CONTENT_AUTHORITY, new Bundle(),SYNC_FREQUENCY);
ContentResolver.setSyncAutomatically(account, CONTENT_AUTHORITY, true);
注意这一点。
欢呼
答案 1 :(得分:0)
设置定期同步似乎是持久操作。这意味着一旦设置它就会保持活动状态,直到您拨打ContentProvider.removePeriodicSync
或卸载应用程序。
这意味着只是评论ContentProvider.addPeriodicSync
并没有帮助摆脱它。尝试卸载应用程序并再次运行它而不调用ContentProvider.addPeriodicSync
。必须禁用定期同步。