gpt4 book ai didi

java - Android 检查互联网连接超时

转载 作者:太空宇宙 更新时间:2023-11-04 12:14:40 27 4
gpt4 key购买 nike

我正在通过 ping google 检查互联网连接状态。问题是,当没有连接时,等待时间会超长。

这是我的代码:

private boolean checkInternet() {
String netAddress = null;
try
{
netAddress = new NetTask().execute("www.google.com").get();
return (!netAddress.equals(""));
}
catch (Exception e1)
{
e1.printStackTrace();
return false;
}
return false;
}

public class NetTask extends AsyncTask<String, Integer, String>
{
@Override
protected String doInBackground(String... params)
{
InetAddress addr = null;
try
{
addr = InetAddress.getByName(params[0]);
}
catch (UnknownHostException e)
{
e.printStackTrace();
return "";
} catch (IOException time)
{
time.printStackTrace();
return "";
}
return addr.getHostAddress();
}
}

我无法连接 isReachable(int timeout) 因为它返回一个 boolean 。我该如何解决这个问题?

最佳答案

如果方法未在指定时间内完成,有多种方法可以取消该方法。

第一个答案to this question可能就是我会走的路。这里它被插入到您的示例中。

ExecutorService executor = Executors.newCachedThreadPool();
Callable<Object> task = new Callable<Object>() {
public Object call() {
String netAddress = new NetTask().execute("www.google.com").get();
return (!netAddress.equals(""));
}
};
Future<Object> future = executor.submit(task);
try{
//Give the task 5 seconds to complete
//if not it raises a timeout exception
Object result = future.get(5, TimeUnit.SECONDS);
//finished in time
return result;
}catch (TimeoutException ex){
//Didn't finish in time
return false;
}

关于java - Android 检查互联网连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39535951/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com