如果没有互联网连接,我的应用程序中的ANR

时间:2012-01-19 11:37:33

标签: java android httpurlconnection

我遇到了一些问题,我可以轻松连接到互联网并阅读网址。但如果没有可用的互联网连接,我会得到ANR,我的应用程序将被强制关闭! 有什么帮助吗?

    try {
        URL Url = new URL(url); 
        HttpURLConnection httpCon = (HttpURLConnection) Url.openConnection();


        httpCon.setRequestMethod("GET");
        //httpCon.setReadTimeout(2000);
        Log.v("Parser","before connect");
        //httpCon.connect(); 
        int response;
            response = httpCon.getResponseCode();

        } catch (Exception urlExc) {
            Log.v("Parser","into parser error" + urlExc.getCause());
            return false;
        }

当没有可用的连接时,它被强制关闭而不是去catch()

1 个答案:

答案 0 :(得分:1)

你是在主UI线程中这样做的吗?如果是这样,不要。调查使用后台线程的众多方法之一。

有关讨论,请参阅此Painless Threading文章。它说:

  

具体来说,如果一切都发生在一个线程中,   执行网络访问或数据库查询等长时间操作   在UI线程上将阻止整个用户界面。没有事件可以   派遣,包括绘制事件,而长期操作是   进行。从用户的角度来看,应用程序显示为挂起。   更糟糕的是,如果UI线程被阻止超过几秒钟   (目前约5秒)向用户呈现臭名昭着的   “应用程序无响应”(ANR)对话框。

ASyncTask可能是一个很好的起点。)