public class NetWorkStatusService extends Service {
private static ScheduledExecutorService executor;
@Override
public void onCreate() {
super.onCreate();
executeFixedRate();
}
@Override
public void onDestroy() {
super.onDestroy();
}
/**
* 以固定周期频率执行任务
*/
public static void executeFixedRate() {
executor = Executors.newScheduledThreadPool(1);
executor.scheduleAtFixedRate(
new EchoServer(),
0,
5,
TimeUnit.SECONDS);
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
static class EchoServer implements Runnable {
@Override
public void run() {
if (NetUtils.ping()) {
TApplication.isNetConnect = true;
} else {
TApplication.isNetConnect = false;
}
try {
throw new RuntimeException();
} catch (Exception e) {
System.out.println("RuntimeException catched,can run next");
}
System.out.println("This is a echo server. The current time is " +
System.currentTimeMillis() + ".");
}
}
}
public class NetUtils {
/* @author suncat
* @category 判断是否有外网连接(普通方法不能判断外网的网络是否连接,比如连接上局域网)
* @return
*/
public static final boolean ping() {
String result = null;
try {
String ip = "www.baidu.com";// ping 的地址,可以换成任何一种可靠的外网
Process p = Runtime.getRuntime().exec("ping -c 3 -w 100 " + ip);// ping网址3次
// 读取ping的内容,可以不加
InputStream input = p.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(input));
StringBuffer stringBuffer = new StringBuffer();
String content = "";
while ((content = in.readLine()) != null) {
stringBuffer.append(content);
}
Log.d("------ping-----", "result content : " + stringBuffer.toString());
// ping的状态
int status = p.waitFor();
if (status == 0) {
result = "success";
return true;
} else {
result = "failed";
}
} catch (IOException e) {
result = "IOException";
} catch (InterruptedException e) {
result = "InterruptedException";
} finally {
Log.d("----result---", "result = " + result);
}
return false;
}
}
网友评论