我正在开发一个移动应用程序。屏幕上有一个矩形。如果我的主机(www.myhost.com)还活着,那么rectange就是绿色。但是没有连接到我的主机,然后rectange是红色的。我有一个AsycTask类连续监听主机。我的代码是
public class ServerPing extends AsyncTask<Void, Void, Void> {
boolean isConnected = false;
boolean isstop=false;
@Override
protected Void doInBackground(Void... params) {
return isOnline();
}
private Void isOnline() {
while (!isstop){
try{
// Thread.sleep(5000);
URL url = new URL("http://myhost.com");
HttpURLConnection urlc = (HttpURLConnection)url.openConnection();
// urlc.setRequestMethod("HEAD");
urlc.setConnectTimeout(3000);
urlc.connect();
if (urlc.getResponseCode()==200) {
if(!isConnected) {
isConnected=true;
...Notify(true); // Notify Screen is green
}
}
else {
if(isConnected)
{
isConnected=false;
...Notify(false); // Notify Screen is red
}
}
urlc.disconnect();
}catch(Exception e) {
if(isConnected) {
isConnected=false;
...Notify(false); // Notify Screen is red
}
}
}
return null;
}
}
这段代码很好。但我的问题是;此操作消耗更多CPU。是否有任何正确的方法来检测服务器是活动还是非活动。