Java 为什么SyncAdapter在我没有调用addPeriodicSync()的情况下创建默认的定期同步?
我在google示例中也使用了这个例子,我想知道,如果我这样做,为什么会创建默认的定期同步(同步间隔86400秒或24小时) 我没有发现任何文档说明创建SyncAdapter和存根代码(SyncService、Authenticator帐户等)也会创建具有默认同步间隔的定期同步 我的问题:是否可以在没有此类默认定期同步的情况下创建SyncAdapter 谢谢 顺便说一句,这就是我如何检测周期同步的存在Java 为什么SyncAdapter在我没有调用addPeriodicSync()的情况下创建默认的定期同步?,java,android,android-syncadapter,Java,Android,Android Syncadapter,我在google示例中也使用了这个例子,我想知道,如果我这样做,为什么会创建默认的定期同步(同步间隔86400秒或24小时) 我没有发现任何文档说明创建SyncAdapter和存根代码(SyncService、Authenticator帐户等)也会创建具有默认同步间隔的定期同步 我的问题:是否可以在没有此类默认定期同步的情况下创建SyncAdapter 谢谢 顺便说一句,这就是我如何检测周期同步的存在 java.util.List<PeriodicSync> periodicSync
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());
}
java.util.List periodicSyncsList=ContentResolver.getPeriodicSyncs(myaccount,CONTENT\u AUTHORITY);
Log.d(标记,“periodicSyncsList=“+periodicSyncsList.size()”中的同步数);
for(PeriodicSync p:periodicSyncsList){
Log.d(TAG,p.toString());
}
设置定期同步似乎是一项持久性操作。这意味着一旦设置,它将保持活动状态,直到您调用ContentProvider.removePeriodicSync
或卸载应用程序
这意味着仅仅注释
ContentProvider.addPeriodicSync
并不能帮助摆脱它。尝试卸载该应用程序并再次运行,而不调用ContentProvider.addPeriodicSync
。那么必须禁用定期同步。我知道有点晚了,但我希望这个答案能对其他人有所帮助
我在本文的自动同步一节中发现,setsyncaumatically方法将隐式地将定期更新设置为24小时
所以,问题的解决方法就是将下面方法调用中的最后一个参数更改为false
ContentResolver.setSyncAutomatically(account, CONTENT_AUTHORITY, false);
我对方法调用顺序也有类似的问题。这将导致周期性同步间隔设置为同步频率值
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);
要意识到这一点
Cheers同意,但是什么语句或操作创建了此定期同步?不管你是否理解,为什么文档中没有提到这一点:(只需调用
ContentProvider.addPeriodicSync
一次就足够了,它将被注册。我同意文档非常薄,可以改进。我想你可能没有理解我在问题中的意思。我的观点是“为什么周期同步不调用addPeriodicSync()就存在?”当我们评论这行代码时(正如我在问题中指出的),我们不可能调用Content.addPeriodicSync
。