2012-07-11 73 views
1

根據Android的SDK文檔爲ConnectivityManagergetBackgroundDataSetting()被棄用的Android 4.x中,並getActiveNetworkInfo()應改爲使用,以查看是否已停用背景資料:ICS中不推薦使用ConnectivityManager.getBackgroundDataSetting();如何使用getActiveNetworkInfo()代替

http://developer.android.com/reference/android/net/ConnectivityManager.html#getBackgroundDataSetting()

但是,與同步關閉,當我詢問我的服務範圍內的NetworkInfo對象,沒有什麼暗示已停用背景資料:

ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
// getBackgroundDataSetting always returns true on Android 4.x 
if (connMgr != null && !connMgr.getBackgroundDataSetting()) { 
    Log.i(WootsUp.TAG, "background data off"); 
    return; 
} 

if (connMgr != null) { 
    NetworkInfo netInfo = connMgr.getActiveNetworkInfo(); 
    if (netInfo == null || netInfo.isAvailable() == false || netInfo.isConnected() == false) { 
     Log.i(WootsUp.TAG, "no active network"); 
     return; 
    } 
} 

無論是當我關閉Sync時,或isConnect()返回false。

是否有NetworkInfo不同的方法,我要查詢,而不是看是否已停用背景資料?僅供參考我正在使用警報驅動的服務,而不使用SyncAdapter API,如果這有所幫助。

謝謝,

羅布

回答

0

'背景數據' 設置已移動在ICS。它與「同步」設置分開。

您可以找到設置下的「背景資料」設置 - >數據用途 - >菜單按鈕 - >限制背景資料。

getActiveNetworkInfo()不相對於該設置。

參見https://android.stackexchange.com/a/17456

+0

你的答案是完全無關的設問。 – 2015-06-03 18:09:43

+1

@JuanAcevedo我不同意。 羅布似乎是假設背景數據應儘快同步被禁止時,禁止下(*與同步關閉,當我詢問我的服務範圍內的NetworkInfo對象,沒有什麼暗示後臺數據被禁用*)。我想這就是他看到意外行爲的原因。 從ICS和起,同步和背景數據是分開設置。可以禁用同步並啓用背景數據,反之亦然。 所以,在我看來這是絕對相關。 – 2015-06-10 18:14:26

相關問題