2013-02-24 32 views
5

Tôi chỉ muốn chạy SyncAdapter trên Wifi. Vào đầu onPerformSync, tôi có thể kiểm tra xem có wifi không. Nếu không, tôi muốn trì hoãn nó cho đến khi có WIFI.SyncAdapter chỉ trên WIFI

Tôi biết về syncresult.delayUntil nhưng điều đó có nghĩa là bộ điều hợp đồng bộ hóa vô dụng được gọi mỗi x phút mặc dù wifi có thể bị vô hiệu hóa chẳng hạn cho cả ngày. Ngoài ra, từ những gì tôi đã đọc delayUntil không áp dụng nếu bạn sử dụng trực tiếp triggerSync.

Cách tiếp cận tốt nhất ở đây là gì? Các ứng dụng như Evernote dường như có tùy chọn đồng bộ hóa này chỉ trên WIFI.

Trả lời

2

Không đặt SyncAdapter để chạy định kỳ.

Thay vì thêm một BroadcastReceiver để ứng dụng của bạn với bộ lọc này:

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

và trong mã BroadcastReceiver, kiểm tra xem WiFi được bật, và nếu như vậy, hãy gọi:

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

Yêu cầu Android để chạy SyncAdapter của bạn.

+2

Nếu phương pháp này được tất cả các ứng dụng sử dụng, nó sẽ làm tổn hại đến trải nghiệm mạng của người dùng. –

Các vấn đề liên quan