Android上inputstream使用问题小记
2013-03-22 11:17
260 查看
我目前正在写一个程序的更新程序的代码。更新的过程中使用了HttpUrlConnection,采用断点续传的方式,从其获得inputstream,并且读取出来,写到文件里。这是整个下载的简单流程。但是在下载的过程中,我发现如果意外的断网了,或者关闭了wifi,下载的线程就会一直阻塞在inputstream的read方法上,并且不会超时。
官方文档说,只有三种情况会unblock。一种是读完数据,socket关闭,然后read方法就会unblock并返回-1,一种就是抛出IO异常,还有就是正常接收到数据。但是如果切换wifi从一个网络到另一个网络时,会抛出异常,断网或者关闭wifi都不会抛出异常,也不会超时。我就很奇怪,为什么不会超时?查了好多资料,最后终于在stackoverflow问出了答案。其实HttpUrlConnection默认是不会超时的,要设置setReadTimeout才行~~简单粗暴!
附上我在stackoverflow问题链接:how-to-unblock-inputstream-read-method-when-connected-to-a-wifi-without-internet
官方文档说,只有三种情况会unblock。一种是读完数据,socket关闭,然后read方法就会unblock并返回-1,一种就是抛出IO异常,还有就是正常接收到数据。但是如果切换wifi从一个网络到另一个网络时,会抛出异常,断网或者关闭wifi都不会抛出异常,也不会超时。我就很奇怪,为什么不会超时?查了好多资料,最后终于在stackoverflow问出了答案。其实HttpUrlConnection默认是不会超时的,要设置setReadTimeout才行~~简单粗暴!
附上我在stackoverflow问题链接:how-to-unblock-inputstream-read-method-when-connected-to-a-wifi-without-internet
相关文章推荐
- 解决:特殊应用场景下--Android 在list view 中使用switch 遇到的switch 重置的问题
- Android 使用android-support-multidex解决Dex超出方法数的限制问题,让你的应用不再爆棚
- Android开发中使用Handler类造成的内存泄露问题
- 我的Android进阶之旅------>Android使用cmd窗口进行adb logcat时出现中文乱码问题的解决办法
- 【libs】解决android同时使用多个library时的问题
- 使用Maven管理Android项目的问题
- Android 之使用LocalBroadcastManager解决BroadcastReceiver安全问题
- Ubuntu 下使用 ADB 调试 Android 应用时的设备识别问题
- Java Socket编程中使用ObjectOutputStream 和 ObjectInputStream 出现问题
- 解决使用小米手机调试android开发程序的问题
- Android使用commons-codec-1.6 遇到的问题
- Android平台上面输入法遮挡问题-android:windowSoftInputMode属性使用
- android开发板使用i2s录音遇到问题
- Android Webview的使用中,onPageFinished方法和onReceivedError方法,onPageFinished在4.4版本会被多次执行的问题
- android 红点BadgeView与RadioButton结合使用的问题
- 关于使用android Eclipse按ctrl+鼠标左键或者F5出现source not found的问题如何解决
- 【Android】【FAQ】解决windows7 64bit系统下部署android开发环境使用Android SDK Manager的failed to fetch问题
- android中,使用ant多渠道打包时出现Perhaps JAVA_HOME does not point to the JDK问题的解决方法
- Android使用的webcview中带有音乐播放控件,在关闭或分享时处于界面不可见状态下,声音仍在播放的问题解决
- 使用Android Studio解决Android 65k问题