5

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

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

这里最好的方法是什么?像印象笔记这样的应用似乎有这个只在 WIFI 上同步的选项。

4

1 回答 1

2

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

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

<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.

于 2014-03-13T12:07:58.753 回答