我正在调试当wi-fi连接丢失时显示ANR消息的问题。因此,当应用程序启动时,它具有WI-Fi连接。连接性下降以及从Wi-Fi切换到3G期间。无法从服务器获取数据。在我的代码中,我捕获异常,然后在短暂的睡眠期后,我再试一次。但是应用程序显示ANR消息和崩溃。我的问题是我应该从哪里开始。什么是领先。我查看了LOGCAT ..但它没有迹象表明应用程序挂在某个特定的地方。来自专家的任何意见。 BTW我的设计是Moto Droid Adroid 2.2
答案 0 :(得分:1)
在我的头脑中,有两件事可能就是问题:
1)您可能正在获取ANR,因为您正在UI线程中阻止IO。你发现这是一件坏事。您的解决方案是在单独的后台线程中执行所有阻塞IO。即使不是直接的情况,最好的做法是在与UI线程分开的线程上执行IO。
2)套接字绑定到wifi接口。当该接口被禁用(即,连接丢失)时,该套接字是无用的。如果您正在捕获异常,然后只是天真地尝试在该套接字上执行另一个操作,那么它将抛出另一个异常。这将使您的应用程序进入无限循环的异常捕获。您应检查异常并在网络接口丢失时正确丢弃套接字。