仅在WIFI上使用SyncAdapter

时间:2013-02-24 08:27:17

标签: android sync

我想仅在Wifi上运行我的SyncAdapter。在onPerformSync的开头,我可以检查是否存在wifi。如果不是,我想推迟它,直到有WIFI可用。

我知道syncresult.delayUntil,但这意味着同步适配器每隔x分钟无用地调用一次,尽管可以禁用wifi,例如整天。此外,如果您直接使用delayUntil,我所阅读的内容triggerSync也不适用。

这里最好的方法是什么?像Evernote这样的应用似乎只能在WIFI上同步这个选项。

1 个答案:

答案 0 :(得分:2)

不要将SyncAdapter设置为定期运行。

使用此过滤器向您的应用添加BroadcastReceiver

<intent-filter>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
<action android:name="android.net.wifi.STATE_CHANGE"/>
</intent-filter>

并在BroadcastReceiver代码中,检查WiFi是否已开启,如果是,请致电:

ContentResolver.requestSync(<Your account, <Your authority>, extras);

要求Android运行您的SyncAdapter