目前我在App上工作,应该可以离线和在线工作。但在某些情况下网络可用但没有互联网连接。或者我如何检查连接速度。如果连接速度非常低,它应该在离线模式下工作。 以下是我如何检查网络可用性的代码。
public static boolean isNetworkAvailable(Context ctx) {
ConnectivityManager connectivityManager = (ConnectivityManager) ctx
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager
.getActiveNetworkInfo();
if (activeNetworkInfo != null) {
if (activeNetworkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
Log.v("Connection Type", "WI FI");
} else if (activeNetworkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
Log.v("Connection Type", "Mobile");
}
}
return activeNetworkInfo != null
&& activeNetworkInfo.isConnectedOrConnecting();
}
答案 0 :(得分:1)
在这种情况下,您可以设置超时限制,如果在该持续时间内数据发送或接收成功,则表示网络错误,并为离线模式执行该任务。
看到这个链接 -
答案 1 :(得分:1)
public boolean isConnectingToInternet(){
ConnectivityManager connectivity = (ConnectivityManager)YourActivity.this.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null)
{
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null)
for (int i = 0; i < info.length; i++)
if (info[i].getState() == NetworkInfo.State.CONNECTED)
{
return true;
}
}
return false;
}
答案 2 :(得分:1)
尝试处理可以帮助您的两个Timeout exception
。
try
{
//do connection process
}
catch (SocketTimeoutException e)
{
System.out.println(e.getMessage());
}
catch (ConnectTimeoutException e2)
{
System.out.println(e2.getMessage());
}