我正在尝试构建一个应该每隔几秒运行一次的SyncAdapter,以快速检查特定数据。 我使用以下代码运行SyncAdapter
ContentResolver.setIsSyncable(account, CONTENT_AUTHORITY, 1);
ContentResolver.setSyncAutomatically(account, CONTENT_AUTHORITY, true);
并且同步是trickred correclty然而我注意到它每十分钟只调用一次。 基于Android培训http://developer.android.com/training/sync-adapters/running-sync-adapter.html说:
当网络连接可用时,Android系统 每隔几秒发送一条消息以保持设备的TCP / IP 连接打开。此消息也会转到每个的ContentResolver 应用程序。通过调用setSyncAutomatically(),您可以运行同步适配器 每当ContentResolver收到消息时。
我可以使用网络连接,但它只有3G连接,而不是WiFi - 这是长时间等待的原因吗? 如何让我的适配器每10秒运行一次? 我已经尝试过使用定期同步
ContentResolver.addPeriodicSync(account, CONTENT_AUTHORITY, new Bundle(), 10);
但它仍然每10分钟运行一次。
答案 0 :(得分:2)
你是android SyncManager
的受害者。考虑这种情况:你为你的应用程序添加了每10分钟的同步,但是你已经在我的手机上安装了我的应用程序,并且要求管理员进行10分钟的定期同步,并且我的应用程序比你的应用程序执行了一秒钟的计划要求:)我的应用程序的同步操作涉及大量数据的传输,因此使用可用互联网连接的整个(或几乎)带宽。聪明的SyncManager
会看到在上一次完成之前启动另一个同步过程并不明智,因此它会等待该过程结束,然后才会启动同步。