Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么SyncAdapter在我没有调用addPeriodicSync()的情况下创建默认的定期同步?_Java_Android_Android Syncadapter - Fatal编程技术网

Java 为什么SyncAdapter在我没有调用addPeriodicSync()的情况下创建默认的定期同步?

Java 为什么SyncAdapter在我没有调用addPeriodicSync()的情况下创建默认的定期同步?,java,android,android-syncadapter,Java,Android,Android Syncadapter,我在google示例中也使用了这个例子,我想知道,如果我这样做,为什么会创建默认的定期同步(同步间隔86400秒或24小时) 我没有发现任何文档说明创建SyncAdapter和存根代码(SyncService、Authenticator帐户等)也会创建具有默认同步间隔的定期同步 我的问题:是否可以在没有此类默认定期同步的情况下创建SyncAdapter 谢谢 顺便说一句,这就是我如何检测周期同步的存在 java.util.List<PeriodicSync> periodicSync

我在google示例中也使用了这个例子,我想知道,如果我这样做,为什么会创建默认的定期同步(同步间隔86400秒或24小时)

我没有发现任何文档说明创建SyncAdapter和存根代码(SyncService、Authenticator帐户等)也会创建具有默认同步间隔的定期同步

我的问题:是否可以在没有此类默认定期同步的情况下创建SyncAdapter

谢谢

顺便说一句,这就是我如何检测周期同步的存在

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