Android 6(Marshmallow)Wifi蓝牙有时会导致SocketTimeoutException

Android 6(Marshmallow)Wifi蓝牙有时会导致SocketTimeoutException,第1张

概述当用户当前正在使用该应用时,我们的Android应用会出现问题,该应用会使用蓝牙扫描信标.应用程序在加载不同视图时从API加载数据.有时,当继续单击视图时,一个请求失败(超时),出现此错误:java.net.SocketTimeoutException:failedtoconnecttowww.examplehost.com/111.222.333.444

当用户当前正在使用该应用时,我们的Android应用会出现问题,该应用会使用蓝牙扫描信标.应用程序在加载不同视图时从API加载数据.有时,当继续单击视图时,一个请求失败(超时),出现此错误:

java.net.socketTimeoutException: Failed to connect to www.examplehost.com/111.222.333.444 (port 80) after 15000ms                                              at libcore.io.IoBrIDge.connectErrno(IoBrIDge.java:169)                                              at libcore.io.IoBrIDge.connect(IoBrIDge.java:122)                                              at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)                                              at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:452)                                              at java.net.socket.connect(Socket.java:884)                                              at com.androID.okhttp.internal.Platform.connectSocket(Platform.java:117)                                              at com.androID.okhttp.internal.http.socketConnector.connectRawSocket(SocketConnector.java:434)                                              at com.androID.okhttp.internal.http.socketConnector.connectCleartext(SocketConnector.java:105)                                              at com.androID.okhttp.Connection.connect(Connection.java:1331)                                              at com.androID.okhttp.Connection.connectAndSetowner(Connection.java:1410)                                              at com.androID.okhttp.OkhttpClIEnt.connectAndSetowner(OkhttpClIEnt.java:128)                                              at com.androID.okhttp.internal.http.httpEngine.nextConnection(httpEngine.java:466)                                              at com.androID.okhttp.internal.http.httpEngine.connect(httpEngine.java:447)                                              at com.androID.okhttp.internal.http.httpEngine.sendRequest(httpEngine.java:353)                                              at com.androID.okhttp.internal.huc.httpURLConnectionImpl.execute(httpURLConnectionImpl.java:468)                                              at com.androID.okhttp.internal.huc.httpURLConnectionImpl.getResponse(httpURLConnectionImpl.java:410)                                              at com.androID.okhttp.internal.huc.httpURLConnectionImpl.getResponseCode(httpURLConnectionImpl.java:532)

(这是我们服务器的IP地址,替换为111.222.333.444)

这是一个超时(> 15秒),而之前的请求相当快.

我没有遇到其他设备的这个问题,只有在更新到AndroID 6.0.1时才能在Samsung S6上使用.因为应用程序位于前台,我认为它不是Doze或Standby(AndroID 6中的新功能),因为该应用程序正在被积极使用.但是当应用程序处于后台时可能会出现同样的问题(但很难测试).

>当关闭Wifi(因此设备使用4G网络)或蓝牙(或两者)时,问题不再发生.
>在LG Nexus 5(也使用AndroID 6.0.1)上,问题永远不会发生.
>我们使用的信标库:http://altbeacon.github.io/android-beacon-library/(2.7版)

有没有人知道我们应该在哪里寻找问题?提前致谢.

解决方法:

虽然这是我在S6上听到的第一个报告,但这是Nexus 4,Nexus 7,Moto G和Moto X等其他设备上的常见问题.这些设备会遇到WiFi和蓝牙无线电之间的干扰,它们共享相同的无线电频带和一些设备型号共用一个芯片和天线.在Nexus 4和Moto G上,问题是如此糟糕,以至于在使用蓝牙扬声器时流式传输音乐是不可能的.所以这个问题并不是特定于信标的.

没有已知的解决方法,但您可以检测设备型号,如果已知有问题,则提示用户关闭WiFi.甚至为用户做这件事(当然有正确的通知.)

知道在具有早期AndroID版本的S6上是否存在相同的问题会很有趣.如果是这样,这表明至少可以在固件中对S6进行修复.

完全披露:我是AndroID Beacon library开源项目的首席开发人员.

总结

以上是内存溢出为你收集整理的Android 6(Marshmallow)Wifi蓝牙有时会导致SocketTimeoutException全部内容,希望文章能够帮你解决Android 6(Marshmallow)Wifi蓝牙有时会导致SocketTimeoutException所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1108299.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存