2013-04-04 45 views
2

我想弄清楚我的應用程序的策略,我需要執行不同的網絡操作。我的問題是,調用ConnectivityManager.getActiveNetworkInfo()是否被認爲是一個長期運行和耗盡電量的操作,以及是否經常打電話是否正確,還是應該通過應用另一種策略來優化應用程序的性能?提前致謝。ConnectivityManager.getActiveNetworkInfo()是否需要經常調用?

+0

嘿,你是否收到一個答案,如果它是昂貴的電話或不?如果是的話,多昂貴w.r.t.使用廣播接收器緩存結果? – q126y 2017-09-05 14:58:22

回答

3

到目前爲止,我已經在三個應用程序中使用了ConnectivityManager.getActiveNetworkInfo()。您可以使用checkNetwork()方法並調用它,以確保每次用戶啓動需要網絡的某些內容時都處於正確的狀態,以便他或她可以糾正這種情況。除此之外,您的錯誤處理可能會將sleep()調用與網絡檢查和連接管理結合起來。這意味着使用大約30兆的權限。但這將是一個合理的方式來做到這一點。

+1

感謝您的回答。實際上,我想過使用BroadcastReceiver實現這個功能,捕獲與連接有關的廣播消息並將狀態存儲在變量中,然後在需要時進行檢查。這有點牽扯,因爲我的應用程序由多個活動組成,我需要知道何時註冊和取消註冊BroadcastReceiver。這就是爲什麼我想知道我描述的方法是否可以根據需要經常調用。 – Egor 2013-04-04 21:14:01

+0

你的想法可能比我的想法更好。如果你的網絡需要用戶觸發,就像點擊一個按鈕時上傳文件一樣,我的工作就沒關係。如果你的使用更重,我認爲你有更好的主意。 – 2013-04-04 22:35:05