PingUtil in Android

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.

Codes in Github.

原文地址:https://www.cnblogs.com/mosthink/p/5288924.html