仅在WIFI上使用SyncAdapter

Cat*_*san 5 android sync

我想SyncAdapter在Wifi上运行我的唯一功能.在开始时onPerformSync,我可以检查是否存在wifi.如果不是,我想推迟它,直到有WIFI可用.

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

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

mar*_*mor 2

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

相反,使用此过滤器将 a 添加BroadcastReceiver到您的应用程序:

<intent-filter>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
<action android:name="android.net.wifi.STATE_CHANGE"/>
</intent-filter>
Run Code Online (Sandbox Code Playgroud)

并在BroadcastReceiver代码中检查WiFi是否打开,如果打开,则调用:

ContentResolver.requestSync(<Your account, <Your authority>, extras);
Run Code Online (Sandbox Code Playgroud)

要请求 Android 运行您的SyncAdapter.

  • 如果所有应用程序都使用这种方法,将会损害用户的网络体验。 (2认同)