0
我已經在這裏看到關於網絡連接的所有答案,它們非常好。唯一的問題是下一個用例。在Android中測試互聯網連接
如果手機連接到wifi網絡,但路由器與互聯網失去連接。所以我想過寫這除了給周圍SO代碼:
/** Google public DNS service IP address **/
public static final String GOOGLE = "http://8.8.8.8";
public static boolean isConnected(Context context) {
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();
if (info == null) {
return false;
}
if (info.isConnected()) {
try {
InetAddress addr = InetAddress.getByName(GOOGLE);
return addr.isReachable(10000);
} catch (UnknownHostException e) {
Log.wtf("Utils", e);
} catch (IOException e) {
Log.wtf("Utils", e);
}
return false;
} else
return false;
}
}
與此唯一的問題是,它運行在主線程,或者更正確的狀態,它崩潰了在主線程中運行。
如果我將在單獨的線程中運行它,它將在從服務器獲得有效答案之前返回。
任何想法如何測試互聯網連接(如與網絡連接)?
何必呢在獲得有效答案之前返回?你能向我們展示你的線程實現嗎? – WarrenFaith
如果我啓動一個新的線程來ping谷歌,該方法將返回而無需等待線程結束。 @WarrenFaith你能提出一種方法來做到這一點,而不會在獲得答案之前完成方法的問題嗎? – thepoosh
線程是如何工作的。你應該實現一個廣播或一個處理程序,如果有連接或不會有通知。 – WarrenFaith