近的一个项目中需要用HttpClient频繁请求远程服务器,开发过程中遇到如下问题导致app闪退,设置请求超时时间或捕捉超时异常都无法阻止app闪退。为什么?
11-23 20:41:18.930: E/System(27238): org.apache.http.impl.conn.SingleClientConnManager.finalize() timed out after 10000 ms; limit is 10000 ms
11-23 20:41:18.950: E/System(27238): java.util.concurrent.TimeoutException
11-23 20:41:18.950: E/System(27238): at libcore.io.Posix.close(Native Method)
11-23 20:41:18.950: E/System(27238): at libcore.io.BlockGuardOs.close(BlockGuardOs.java:75)
11-23 20:41:18.950: E/System(27238): at libcore.io.IoBridge.closeSocket(IoBridge.java:188)
11-23 20:41:18.950: E/System(27238): at java.net.PlainSocketImpl.close(PlainSocketImpl.java:162)
11-23 20:41:18.950: E/System(27238): at java.net.Socket.close(Socket.java:316)
11-23 20:41:18.950: E/System(27238): at org.apache.http.impl.SocketHttpClientConnection.shutdown(SocketHttpClientConnection.java:183)
11-23 20:41:18.950: E/System(27238): at org.apache.http.impl.conn.DefaultClientConnection.shutdown(DefaultClientConnection.java:150)
11-23 20:41:18.950: E/System(27238): at org.apache.http.impl.conn.SingleClientConnManager$PoolEntry.shutdown(SingleClientConnManager.java:440)
11-23 20:41:18.950: E/System(27238): at org.apache.http.impl.conn.SingleClientConnManager.shutdown(SingleClientConnManager.java:376)
11-23 20:41:18.950: E/System(27238): at org.apache.http.impl.conn.SingleClientConnManager.finalize(SingleClientConnManager.java:135)
11-23 20:41:18.950: E/System(27238): at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:186)
11-23 20:41:18.950: E/System(27238): at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:169)
11-23 20:41:18.950: E/System(27238): at java.lang.Thread.run(Thread.java:856)
呼呼……经过两天的研究发现,是由于HttpClient接口调用频繁,请求结束但未关闭连接/资源,导致tcp 网络阻塞,所以app出现了很多ConnectTimeoutException,android系统发现某app十秒内没有响应,就认为它已经变成僵尸进程,直接把它干掉了,所以会导致app闪退。
分享到:
相关推荐
android串口调用,使用c开发的,可以设置串口超时。比谷歌的串口demo好(谷歌的IO堵塞模式),也可以使用堵塞时读取不超时。
网络操作涉及很多处理 需要判断网络连接状态 接口返回是否成功 失败 异常 或者超时 该demo 完整展现数据访问的处理 请大家结合实际使用
本文主要讲了51单片机串口通信是否需要加超时中断这个问题,下面一起来学习一下
Android开发中经常需要调用线程访问网络,而手机的网络信号经常断断续续,容易出现网络超时的情况,这种情况下后台线程往往得不到关闭,浪费系统资源。 在下面的例子中使用了java 中的Timer类,对线程进行了约束,...
OKHttp3是如今非常流行的Android网络请求框架,那么如何利用Android实现断点续传呢,今天写了个Demo尝试了一下,感觉还是有点意思 准备阶段 我们会用到OKHttp3来做网络请求,使用RxJava来实现线程的切换,并且开启Java8...
易语言网络超时扫描源码,网络超时扫描,扫描,设置扫描超时,closesocket,select,Connect,socket,ioctlsocket,inet_addr,htons,WSAStartup
QQ登陆超时怎么办?.docx
## 开发环境: Myclipse/Eclipse/Idea都可以(服务器端) + Eclipse/AndroidStudio都可以(手机客户端) + mysql数据库 ## 系统客户端和服务器端架构技术: 界面层,业务逻辑层,数据层3层分离技术,MVC设计思想! ## ...
//设置连接超时 HttpParams httpParameters = new BasicHttpParams(); int timeoutConnection = 3000; HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection); ...
android关机时间慢
为什么QQ登陆不上去,QQ登陆超时怎么办?.docx
请问有谁知道在STM32中如何做超时检测吗?目前STM32上有一个串口转RS485,挂了约50个节点。然后需要检测每个节点返回的命令是否超时。请问一下,如何来检测这个超时呢?
排查分析 1、工控板使用了NXP的PCF8563 RTC 芯片方案,该方案是外置32.768kHz的石英晶体和电容,该RTC芯片的输出精度取决于其外接的石英晶体输出的时钟频率是否精准。 ... 石英晶体本身输出频率带有一定的误差...
Android 使用volley过程中遇到的问题解决办法 本文主要介绍使用 volley 过程中遇到的问题,错误提示: com.android.volley.NoConnectionError: java.io.InterruptedIOException”,内容加载失败,问题出在重复调用 ...
通过dialog设计一个进度条,加载超时的时候进行重新加载数据demo
本来以为是偶尔的网络问题,但是,同学发现在测试服务器上,很稳定的复现超时!但是在我们本地测试过程中,请求微信服务器又很快响应。嗯,理论上微信服务器不会出问题的…… 试着在服务器上去 curl 微信的接口,...
主要介绍了Android 异步任务 设置 超时使用handler更新通知,文中给大家提到了使用AsyncTask设置请求超时的注意事项,需要的朋友可以参考下
Modbus RTU 通信连接超时参数.docxModbus RTU 通信连接超时参数.docxModbus RTU 通信连接超时参数.docxModbus RTU 通信连接超时参数.docxModbus RTU 通信连接超时参数.docxModbus RTU 通信连接超时参数.docxModbus ...
易语言源码易语言网络超时扫描源码.rar