仅适用于WIFI的SyncAdapter

问题描述:

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

我知道syncresult.delayUntil,但这意味着同步适配器无用地每x分钟调用一次,尽管wifi可能在整个一天都被禁用。另外,如果您直接使用triggerSync,则从我读取的delayUntil不适用。

这里最好的办法是什么? Evernote等应用似乎只能在WIFI上同步。

请勿将您的SyncAdapter定期运行。

而是添加BroadcastReceiver到您的应用程序使用此过滤器:

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

,并在BroadcastReceiver代码,检查无线网络连接被打开,如果是这样,请致电:

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

要请求Android来运行你的SyncAdapter

+2

如果所有应用都使用此方法,将会损害用户的网络体验。 – 2015-12-19 16:19:24