在Android中检查互联网连接(功能比较)
因此,我在比较下面应该实现的两个函数中的哪一个。我知道一种是检查手机是否连接到互联网,另一种是检查你是否有连接?一个比另一个更好吗?一个比另一个做什么?他们做同样的事情吗 职能1:在Android中检查互联网连接(功能比较),android,connectivity,Android,Connectivity,因此,我在比较下面应该实现的两个函数中的哪一个。我知道一种是检查手机是否连接到互联网,另一种是检查你是否有连接?一个比另一个更好吗?一个比另一个做什么?他们做同样的事情吗 职能1: public static boolean hasActiveInternetConnection(Context context) { if (isNetworkAvailable(context)) { try { HttpURLConnection urlc = (Ht
public static boolean hasActiveInternetConnection(Context context) {
if (isNetworkAvailable(context)) {
try {
HttpURLConnection urlc = (HttpURLConnection) (new URL("http://www.google.com").openConnection());
urlc.setRequestProperty("User-Agent", "Test");
urlc.setRequestProperty("Connection", "close");
urlc.setConnectTimeout(1500);
urlc.connect();
return (urlc.getResponseCode() == 200);
} catch (IOException e) {
Log.e(LOG_TAG, "Error checking internet connection", e);
}
} else {
Log.d(LOG_TAG, "No network available!");
}
return false;
}
职能2:
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null;
}
函数2具有更清晰的声明方式,您可以请求网络可用性,而不是执行检查步骤(如函数1)。
此外,Android 5.0还提供了新的多网络API,让您的应用程序能够动态扫描具有特定功能的可用网络,并建立与它们的连接,请参见功能2以更清晰的声明方式,您可以请求网络可用性,而不是执行检查步骤(如功能1)。
此外,Android 5.0还提供了新的多网络API,让您的应用程序能够动态扫描具有特定功能的可用网络,并建立与这些网络的连接,请参见我通常同时使用这两种API。。。与您的情况类似(isNetworkavailable&&hasActiveInternetConnection)
第一种方法将检查是否存在连接(例如,如果手机处于飞行模式,则不会有连接),如果这似乎有效,第二种方法将检查是否确实可以通过该连接接收数据我通常使用这两种方法。。。与您的情况类似(isNetworkavailable&&hasActiveInternetConnection)
第一种方法将检查是否存在连接(例如,如果手机处于飞行模式,则不会有连接),如果这似乎有效,第二种方法将检查是否确实可以通过该连接接收数据我知道facebook启动了一个库来检查网络流量质量,您可以检查github:
我知道facebook推出了一个用于检查网络流量质量的库,您可以查看github:
我认为先使用函数2。如果成功,则调用函数1.;-)
功能2将确保设备上有一些连接。如果是,那么function2将ping一些uri,在本例中为google。在设备可能连接到某些wifi,但仍存在连接问题等情况下,此功能非常有用
有时可能出现的唯一问题是连接速度非常慢。即使连接可用,也可能会说没有可用的连接在我看来,请先使用function2。如果成功,则调用函数1.;-)
功能2将确保设备上有一些连接。如果是,那么function2将ping一些uri,在本例中为google。在设备可能连接到某些wifi,但仍存在连接问题等情况下,此功能非常有用
有时可能出现的唯一问题是连接速度非常慢。即使连接可用,也可能会说没有可用的连接。首先,功能1。需要许可
<uses-permission android:name="android.permission.INTERNET"/>
功能2.需要
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
功能1。
- 传输实际数据(错误)
- 如果DNS服务器死机,则无法工作
- 如果谷歌倒下,则不起作用(可能性很小,但不是0%)
- 在慢速移动网络上,可能需要相当长的时间才能得到响应(非常糟糕)
实际上,您应该只使用函数2。并正确处理对您的服务器的失败请求。首先,函数1。需要权限
<uses-permission android:name="android.permission.INTERNET"/>
功能2.需要
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
功能1。
- 传输实际数据(错误)
- 如果DNS服务器死机,则无法工作
- 如果谷歌倒下,则不起作用(可能性很小,但不是0%)
- 在慢速移动网络上,可能需要相当长的时间才能得到响应(非常糟糕)
实际上,您应该只使用函数2.并正确处理对您的服务器的失败请求我尝试了+1!那很酷。你已经实现了吗,如果是的话,难不难?我还没有使用这个API,但它看起来并不难实现:)我尝试了+1!那很酷。你已经实现了吗,如果是的话,难不难?我还没有使用这个API,但它看起来并不难实现:)所有答案都很好,选择这个是因为它提到了最佳实践。。。。谢谢大家。所有答案都很好,选择这个答案是因为它提到了最佳实践。。。。谢谢大家。