我遇到了一些问题,我可以轻松连接到互联网并阅读网址。但如果没有可用的互联网连接,我会得到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()
答案 0 :(得分:1)
你是在主UI线程中这样做的吗?如果是这样,不要。调查使用后台线程的众多方法之一。
有关讨论,请参阅此Painless Threading文章。它说:
具体来说,如果一切都发生在一个线程中, 执行网络访问或数据库查询等长时间操作 在UI线程上将阻止整个用户界面。没有事件可以 派遣,包括绘制事件,而长期操作是 进行。从用户的角度来看,应用程序显示为挂起。 更糟糕的是,如果UI线程被阻止超过几秒钟 (目前约5秒)向用户呈现臭名昭着的 “应用程序无响应”(ANR)对话框。
(ASyncTask可能是一个很好的起点。)