有一个class是处理请求各种网络数据的,若干个activity里面都会调用该class里面的方法来请求数据
我有个想法,就是每次调用网络方法的时候,都事先检查网络是否可用。但是这样可能会影响效率
第二:网络连接超时怎么处理?有没有什么像web那样的统一入口来处理异常比如struts2的全局异常。
      有人说,在网络请求的那个类中就处理连接超时的异常,但是android都是异步的获取数据的。这样做我的activity不是都要判断异常种类(是否是连接超时,是连接超时要提示用户。因为有可能是没有数据返回而不是连接超时,所以不同情况不同提示。)不知道大家有什么好的介意。
检查网络是否可用应该在什么地方检查???
连接超时怎么处理?
能给个代码 就太感谢了!Android网络异常 java 

解决方案 »

  1.   

    检查网络应该是在每次需要调用网络方法的时候检查一下。这样做应该没有问题。
    连接超时就抛出个异常呗,捕获之后ui显示成一个error dialog。
    异步可以用handler发送超时异常,如果你用AsyncTask可以捕获异常后在onCancelled里面写你的超时的逻辑。判断超时可以用连接的当前时间在加上设定值,超过了就抛出超时异常。
      

  2.   

    谢谢你的思路:我是这样实现的初步测试应该可以行得通:
     应用程序已启动就检查网络,如果没有网络调用系统设置网络,用户也可以不设置,继续操作我的应用,
    但是我不在检查网络了,直接用httpClient连接网络,设置超时时间,然后捕获异常,当捕获到异常后返回一个null给调用着。调用者是AsyncTask然后再它的那个onPostExecute方法中判断返回值如果为null,就转到一个统一的Activity去显示一个界面,告诉用户网络异常。
    这样做只是,现在我有很多activity,每个activity都要去判断返回值,虽然有点繁琐,但是好像效果还是可以的。不知道还有什么好方法么
     哦 在这里我再问一个问题,我捕获到网络异常后 如果我 在catch中throw new  exception(自定义)
     为什么当异常发生的时候程序会弹出强制关闭框(就是android系统的那个崩溃框)如果我只是捕获什么也不做,到不会弹出这个框,程序能正常执行到我异常的页面去?!
      

  3.   

    你弹出异常的问题,我估计你的网络请求时在线程里做的吧,线程里不能直接操作UI,必须向handler发送消息,告诉UI线程,有个UI要更新,交给UI线程去处理
      

  4.   

    谢谢你的思路:我是这样实现的初步测试应该可以行得通:
     应用程序已启动就检查网络,如果没有网络调用系统设置网络,用户也可以不设置,继续操作我的应用,
    但是我不在检查网络了,直接用httpClient连接网络,设置超时时间,然后捕获异常,当捕获到异常后返回一个null给调用着。调用者是AsyncTask然后再它的那个onPostExecute方法中判断返回值如果为null,就转到一个统一的Activity去显示一个界面,告诉用户网络异常。
    这样做只是,现在我有很多activity,每个activity都要去判断返回值,虽然有点繁琐,但是好像效果还是可以的。不知道还有什么好方法么
     哦 在这里我再问一个问题,我捕获到网络异常后 如果我 在catch中throw new  exception(自定义)
     为什么当异常发生的时候程序会弹出强制关闭框(就是android系统的那个崩溃框)如果我只是捕获什么也不做,到不会弹出这个框,程序能正常执行到我异常的页面去?!
    子线程抛出的异常主线程无法捕获。。