仅适用于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
。
如果所有应用都使用此方法,将会损害用户的网络体验。 – 2015-12-19 16:19:24