我正在尝试构建一个 SyncAdapter,它应该每隔几秒运行一次以快速检查特定数据。我正在使用以下代码来运行 SyncAdapter

ContentResolver.setIsSyncable(account, CONTENT_AUTHORITY, 1);           
ContentResolver.setSyncAutomatically(account, CONTENT_AUTHORITY, true);

并且同步被正确触发,但是我注意到它每十分钟只调用一次。基于android训练 http://developer.android.com/training/sync-adapters/running-sync-adapter.html 说:

当有网络连接可用时,Android系统每隔几秒钟就会发送消息,以保持设备的TCP/IP连接打开。此消息也转移到每个应用程序的ContentResolver。通过调用setSyncautomation(),您可以在ContentResolver收到消息时运行同步适配器。

我可以使用网络连接,但它只是 3G 连接,而不是 WiFi - 这是长时间等待的原因吗?如何让我的适配器每 10 秒运行一次?我已经尝试过使用定期同步

ContentResolver.addPeriodicSync(account, CONTENT_AUTHORITY, new Bundle(), 10);

但它仍然每 10 分钟运行一次。

有帮助吗?

解决方案

你是安卓系统的受害者 SyncManager. 。考虑这种情况:您为应用程序添加每 10 分钟同步一次,但您已在手机上安装了我的应用程序,该应用程序还要求管理器进行 10 分钟定期同步,并且我的应用程序比您的应用程序早一秒完成了计划要求:) 的同步操作我的应用程序涉及大量数据的传输,因此使用可用互联网连接的整个(或几乎)带宽。聪明的 SyncManager 将发现在前一个同步过程完成之前启动另一个同步过程是不明智的,因此它将等待该过程结束,然后才触发同步。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top