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;
}
}
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。