Android SyncAdapter 频率
-
21-12-2019 - |
题
我正在尝试构建一个 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
将发现在前一个同步过程完成之前启动另一个同步过程是不明智的,因此它将等待该过程结束,然后才触发同步。
不隶属于 StackOverflow