Ping a host in Android:
“ping -c 1 127.0.0.1”
-c 1: The ping times.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
boolean flag = false;
Runtime run = Runtime.getRuntime();
Process proc = null;
try {
proc = run.exec("ping -c 1 127.0.0.1");
int result = proc.waitFor();
if (result == 0) {
flag = true;
} else {
flag = false;
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
proc.destroy();
}
|
Ping codes is simple, but:
1, you must run it in background thread since Process.waitfor() will blocks current thread.
2, And you should control the the execution time for Process.waitfor().
The solutions of above 2 issues could be:
1, AsyncTask to run Process.waitfor() in background;
2, Handler.sendEmptyMessageDelayed() to send a delayed message which cancel the AsyncTask if the background codes running too long time.