从远程服务器获取JSON数据并在触发asynctask之前在下面的代码的帮助下检查互联网连接的可用性
if (isOnline()==true){
new DownloadJSON().execute();
}
//do whatever you want to do
else
{
try {
Toast.makeText(context, "Slow or No Internet Connection", Toast.LENGTH_SHORT).show();
}
catch(Exception e)
{
}
}
public boolean isOnline() {
try {
Process p1 = Runtime.getRuntime().exec("ping -c 1 www.google.com");
int returnVal = p1.waitFor();
boolean reachable = (returnVal == 0);
if (reachable) {
return true;
} else {
return false;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
p1.destroy();
}
return false;
}
这适用于没有互联网连接。即使它适用于类似的情况,有wifi但没有互联网接入。但问题是,如果互联网连接缓慢并被强制关闭,它会使我的活动失效。
请指导我如何为isOnline()添加超时值,或者是否有更好的方法来处理catch块中的此类错误