我需要有关解释的帮助为什么我们在同步适配器服务类中使用单例对象privatestaticSyncAdaptersSyncAdapter=null;privatestaticfinalObjectsSyncAdapterLock=newObject();@OverridepublicvoidonCreate(){synchronized(sSyncAdapterLock){if(sSyncAdapter==null){sSyncAdapter=newSyncAdapter(getApplicationContext(),true);}}}看答案因为该框架仅与一个SyncAdapter一起使用:同
如果我需要临时启动同步,我会使用requestSync。但是当setIsSyncable定义为false时,它似乎不起作用。这种情况下如何根据用户请求发起同步?此外,如果之后我将setIsSyncable定义为true并且还使用addPeriodicSync开始周期同步,同步将开始2次。 最佳答案 1:覆盖setIsSyncable:在requestSync()extrasBundle中添加ContentResolver.SYNC_EXTRAS_IGNORE_SETTINGS设置为true。2:双同步(先看评论)
我已经阅读了有关同步适配器的所有详细信息,并且我了解它是如何工作的,但是我找不到任何关于是否可以不让用户取消同步数据的信息。例如,如果我使用syncadapter将我的应用程序的所有数据与服务器同步,显然我不希望用户能够从帐户屏幕上选中“不同步数据”,所以我想要了解是否有办法将所有这些数据与同步适配器同步,方法是不选择取消同步复选框,或者创建一个用户无法修改的隐藏同步帐户。如果在这种情况下使用同步适配器是错误的上下文,我将感谢一些示例,这些示例可以更好地实现我需要的东西或朝着正确的方向前进。我认为使用syncadapter可能是错误的,我可能必须实现我自己的自定义服务,我只需要一个例子
不知何故,我不明白查询参数CALLER_IS_SYNCADAPTER的工作概念。它的默认值为false,如果设置,则不会自动设置DIRTY标志。那么它到底是什么意思呢?根据我的理解,联系人的每次更改都会导致将脏标志设置为1。同步适配器完成作业后,使用带有CALLER_IS_SYNCADAPTER的插入/更新/删除,插入/更新和删除的记录应该有一个脏标志0,是这样吗?但是,如果我使用该可选参数调用查询,条目将保留标志1。还有什么我必须做的吗,或者我对它应该如何工作的理解有误?或者有什么东西可以告诉系统同步已成功完成以设置标志?有人有进一步阅读的示例或建议吗?
为同步定义的ContentProvided是虚拟的(根据thisapproach)。 最佳答案 如果API>8,(95%的设备)使用ContentResolver.addPeriodicSync()如果API=7,(截至2102年3月,5.5%的设备)创建一个带有周期性定时器回调的服务,并调用ContentResolver.requestSync()。API 关于android-如何定义android上SyncAdapter更新的频率?,我们在StackOverflow上找到一个类似的问
我不希望对我的同步适配器使用身份验证,因为我计划使用它来同步Twitter公共(public)时间线以进行搜索查询。我应该使用SyncAdapter还是任何普通服务? 最佳答案 在此用例中,两者都可以正常工作。如果您的应用程序可能包含多个用户帐户,那么最好采用SyncAdapter/Account路线,因为它会维护标准的帐户管理程序(您可以拥有未经身份验证的帐户)。使用SyncAdapter还意味着Android会根据需要自动同步您的数据。对于标准服务,如果您希望它在后台每隔X分钟自动同步一次,则需要设置该功能,但除此之外它会同样简
我正在使用SyncAdapter和GCM将后端服务器上的不同类型的更改通知我的应用程序。例如,如果更改A在服务器上发生,我会使用名为change_a的字段发送推送通知,我通过ContentResolver.requestSync()将其传递给SyncAdapter。这样,SyncAdapter就知道要从服务器同步什么。同样,对于更改B,我发送了一个名为change_b的字段。除一个用异常(exception),这非常有效。我发送了一个change_a通知,它调用了ContentResolver.requestSync()但是,因为没有网络可用性,SyncAdapter还没有被调用。如果
我有一个工作正常的同步适配器。它不需要互联网连接,因为它需要将地址簿与另一个本地存储(我的应用程序)同步。当Wifi关闭且设备没有任何互联网连接时,Android会在“帐户和同步”设置Activity中禁用同步。有没有办法让我的同步适配器在连接断开时也保持打开状态? 最佳答案 没办法,如果没有互联网连接,SyncAdpater框架将无法工作,因此最好将您的同步适配器重新实现为Intent服务。 关于android-没有互联网连接的syncadapter,我们在StackOverflow上
我只想在Wifi上运行我的SyncAdapter。在onPerformSync的开头,我可以检查wifi是否存在。如果没有,我想推迟到有可用的WIFI为止。我知道syncresult.delayUntil但这意味着同步适配器每隔x分钟就会无用地调用一次,尽管wifi可能会被禁用一整天。此外,根据我的阅读,如果您直接使用triggerSync,则delayUntil不适用。这里最好的方法是什么?像Evernote这样的应用程序似乎有这种仅在WIFI上同步的选项。 最佳答案 不要将您的SyncAdapter设置为定期运行。改为使用此过滤
我有一个SyncAdapter,它在初始入职流程(登录/注册)期间被调用,它处理联系人以查找已经在使用该系统的用户联系人。当SyncAdapter运行时,该应用几乎每次(10次中有9次)在特定设备(MotoG)上被终止。我最初的想法是,由于设备的可用RAM有限,该应用程序将被终止。所以,我triedthis验证理论:@OverridepublicvoidonPerformSync(Accountaccount,Bundleextras,Stringauthority,ContentProviderClientprovider,SyncResultsyncResult){Activity