如何在Android中侦听主机URL以检测活动或非活动状态

时间:2016-09-16 05:50:34

标签: java android

我正在开发一个移动应用程序。屏幕上有一个矩形。如果我的主机(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。是否有任何正确的方法来检测服务器是活动还是非活动。

0 个答案:

没有答案