2013-02-24 51 views
5

我想僅在Wifi上運行我的SyncAdapter。在onPerformSync的開頭,我可以檢查wifi是否存在。如果不是,我想推遲它,直到有WIFI可用。僅適用於WIFI的SyncAdapter

我知道syncresult.delayUntil,但這意味着同步適配器無用地每x分鐘調用一次,儘管wifi可能在整個一天都被禁用。另外,如果您直接使用triggerSync,則從我讀取的delayUntil不適用。

這裏最好的辦法是什麼? Evernote等應用似乎只能在WIFI上同步。

回答

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代碼,檢查無線網絡連接被打開,如果是這樣,請致電:

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

要請求Android來運行你的SyncAdapter

+2

如果所有應用都使用此方法,將會損害用戶的網絡體驗。 – 2015-12-19 16:19:24