[英]Android is device connected to the internet method
我想創建一個方法來告訴設備是否在線。 據我了解,ConnectivityManager僅告訴設備是否已連接到網絡。 這並不意味着設備已連接到互聯網。 為確保設備在線,我使用了InetAddress.getByName("google.com").isReachable(3);
但是我不能在主線程上使用它。 我可以創建一個單獨的線程來檢查連接性,然后使用回調函數,但是還有另一種方法嗎? 我不希望我的應用在連接之前執行任何操作。 你有什么解決方案? 謝謝!
嘗試這個:
public static boolean isOnline(Context context) {
ConnectivityManager cm =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnected()) {
return true;
}
return false;
}
對於任何網絡,都無法保證在不實際發送數據的情況下檢查您是否已連接到端點。 即使設備已連接到網絡,具有ip地址,最近接收到的數據等,也並不意味着您仍在連接。
我建議允許用戶盡可能多地進入您的應用程序,在建立連接的同時在后台將對服務器的請求排隊。 如果在用戶使用應用程序時連接斷開,請使用相同的框架重新發送數據。 使與服務器的連接對用戶盡可能透明,除非在1分鍾后連接失敗
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.