Java 如何创建从处理程序返回值的布尔方法
我已经创建了一个类来检查设备上的互联网访问,我的类代码是Java 如何创建从处理程序返回值的布尔方法,java,android,multithreading,methods,Java,Android,Multithreading,Methods,我已经创建了一个类来检查设备上的互联网访问,我的类代码是 public class CheckInternet { private static Handler h = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what != 1) { // code if not connected statu
public class CheckInternet {
private static Handler h = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what != 1) { // code if not connected
status = false;
System.out.println("Status False");
} else { // code if connected
status = true;
System.out.println("Status True");
}
}
};
private static void isNetworkAvailable(final Handler handler, final int timeout) {
new Thread() {
private boolean responded = false;
@Override
public void run() {
new Thread() {
@Override
public void run() {
HttpGet requestForTest = new HttpGet("http://m.google.com");
try {
new DefaultHttpClient().execute(requestForTest); // can last...
responded = true;
} catch (Exception e) {}
}
}.start();
try {
int waited = 0;
while(!responded && (waited < timeout)) {
sleep(100);
if(!responded ) {
waited += 100;
}
}
}
catch(InterruptedException e) {} // do nothing
finally {
if (!responded) { handler.sendEmptyMessage(0);
}
else { handler.sendEmptyMessage(1);
}
}
}
}.start();
}
}
但问题是它总是返回旧的状态值,因为当线程运行时,该方法会向我发送旧的状态值。
我想获取更新的状态值。您最好使用
isReachable(超时)
关于您最好使用
isReachable(超时)
关于它能在android设备上工作吗?公共静态布尔测试(){//TODO自动生成的catch block e.printStackTrace();System.err.println(e.getMessage());return false;}}虽然我的设备已连接,但此代码显示未连接。在这种情况下,您的应用程序无法连接到www.googe.com。它能在android设备上工作吗?公共静态布尔测试(){try}{InetAddress InetAddress=InetAddress.getByName(“www.google.com”);if(InetAddress.isReachable(1000)){System.out.println(“已连接”);return true;}else{System.out.println(“未连接”);return false;}}catch(异常e){//TODO自动生成的catch块e.printStackTrace();System.err.println(e.getMessage());return false;}}}虽然我的设备已连接,但此代码显示未连接。在这种情况下,您的应用程序无法连接到www.google.com。
private static Boolean status = true ;
public static Boolean isConnected() {
Runnable runnable = new Runnable() {
public void run() {
// TODO Auto-generated method stub
isNetworkAvailable(h,2000);
}
};
runnable.run();
return status;
}