繁体   English   中英

如果没有可用的互联网连接,则我的应用中存在ANR

[英]ANR in my app if no internet connection available

我有一个小问题,我可以连接到互联网并轻松阅读网址。 但是如果没有可用的互联网连接,我会收到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()

您是在主UI线程中执行此操作吗? 如果是这样,那就不要。 研究使用后台线程的多种方法之一。

请参阅这篇无痛线程文章以进行讨论。 它说:

具体来说,如果所有事情都发生在单个线程中,则在UI线程上执行长时间的操作(如网络访问或数据库查询)将阻塞整个用户界面。 进行长时间操作时,不能调度任何事件,包括绘图事件。 从用户的角度来看,该应用程序似乎已挂起。 更糟糕的是,如果UI线程被阻塞了几秒钟(当前大约5秒钟),则会向用户显示臭名昭著的“应用程序无响应”(ANR)对话框。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM