2011-11-30 23 views
2

我有一項服務,每小時輪詢嘗試將數據自動同步到設備的網頁。強制上網嘗試?

我有它的工作,但我需要找到一種方法來建立一個互聯網連接,如果沒有一個可用。

例如 - 如果我的手機處於待機模式(屏幕鎖定一段時間),則互聯網連接將被丟棄,並且無法在需要時進行同步。

我想嘗試通過WiFi連接,如果可用,然後使用3G如果需要。
有沒有可靠的方法來做到這一點?

更新 - 我發現它使用此代碼嘗試通過3G連接,如果沒有可用的WiFi文章在線:

int resultInt = connectivityManager.startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE, "enableHIPRI"); 

遺憾的是它似乎並沒有在所有設備上工作,也許我需要嘗試除「enableHIPRI」之外的其他選項?

任何想法?

回答

2

好吧,雖然我一直無法解決這個問題,但我發現在同步嘗試之間延遲的主要原因是因爲在休眠模式下cpu被停止,這意味着我的計時器任務已暫停。

我的解決方法是使用清醒的意圖來解決計時器問題來重寫服務。

這使得我的解決方案更可靠,所以我正在關閉這個問題! :)

0

你應該可以使用ConnectivityManager來完成大部分工作。它允許您查詢可用的網絡類型並使用requestRouteToHost您應該能夠確保您需要進行同步設置。

+0

感謝指針 - 我發現這篇文章提示requestRouteToHost不實例化一個連接嘗試: http://groups.google.com/group/android-platform/browse_thread/thread/8dd0c6ebea736dd0/2d143d2121066a48? lnk = raot&pli = 1 我需要找到一種方法來嘗試一個新的連接,如果沒有一個已經建立:) – Mike

+0

難道你只是開始連接?如果失敗,你會得到某種IOException。 – botteaap

+0

感謝您的回覆 - 我正在記錄Web服務器上的最後一次同步時間,我可以看到即使它設置爲每小時啓動一次連接,但在活動之間有時會持續3天。我正在家中進行測試,在那裏我有一個可用的無線點和3G接入,因此我得出結論,當手機處於待機模式時,它會斷開連接,並且需要先手動建立連接 - 我找不到可靠的嘗試方法並建立手動連接! – Mike

0

我認爲你不能在手機上依賴這樣的東西,就像在任何嵌入式設備中一樣,你不能確定設備是否會連接並保持連接。您只能爲用戶留下數據未同步的消息,或者通過檢查是否存在連接,然後在一小時內進行同步來嘗試將其最小化。

+0

感謝您的建議,但我並非試圖依賴連接,只需依靠嘗試連接而不管無線設備上的移動數據。如果每次同步都發生並不重要,但是如果有可用的話,嘗試啓動連接至關重要:) – Mike

相關問題