jjzjj

Android 6 (Marshmallow) Wifi + Bluetooth 有时会导致 SocketTimeoutException

coder 2023-12-27 原文

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

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$1.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 秒),而在此之前的请求相当快。

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

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

最佳答案

虽然这是我在 S6 上听到的第一份报告,这是 Nexus 4、Nexus 7、Moto G 和 Moto X 等其他设备上的常见问题。这些设备体验 < strong="">WiFi 和蓝牙 radio 之间的干扰,它们共享相同的 radio 频段,并且在某些设备型号中共享芯片和天线。在 Nexus 4 和 Moto G 上,问题严重到无法在使用蓝牙扬声器的同时播放音乐。所以问题不是特定于信标。

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

如果 S6 和较早的 Android 版本存在同样的问题,那将是一件很有趣的事情。如果是这样,这表明至少对于 S6 来说,固件中的修复是可能的。

全面披露:我是 Android Beacon Library 开源项目的首席开发人员。

关于Android 6 (Marshmallow) Wifi + Bluetooth 有时会导致 SocketTimeoutException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36313143/

有关Android 6 (Marshmallow) Wifi + Bluetooth 有时会导致 SocketTimeoutException的更多相关文章

  1. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

    我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

  2. ruby - 使用 `+=` 和 `send` 方法 - 2

    如何将send与+=一起使用?a=20;a.send"+=",10undefinedmethod`+='for20:Fixnuma=20;a+=10=>30 最佳答案 恐怕你不能。+=不是方法,而是语法糖。参见http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html它说Incommonwithmanyotherlanguages,Rubyhasasyntacticshortcut:a=a+2maybewrittenasa+=2.你能做的最好的事情是:

  3. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  4. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  5. arrays - Ruby 数组 += vs 推送 - 2

    我有一个数组数组,想将元素附加到子数组。+=做我想做的,但我想了解为什么push不做。我期望的行为(并与+=一起工作):b=Array.new(3,[])b[0]+=["apple"]b[1]+=["orange"]b[2]+=["frog"]b=>[["苹果"],["橙子"],["Frog"]]通过推送,我将推送的元素附加到每个子数组(为什么?):a=Array.new(3,[])a[0].push("apple")a[1].push("orange")a[2].push("frog")a=>[[“苹果”、“橙子”、“Frog”]、[“苹果”、“橙子”、“Frog”]、[“苹果”、“

  6. += 的 Ruby 方法 - 2

    有没有办法让Ruby能够做这样的事情?classPlane@moved=0@x=0defx+=(v)#thisiserror@x+=v@moved+=1enddefto_s"moved#{@moved}times,currentxis#{@x}"endendplane=Plane.newplane.x+=5plane.x+=10putsplane.to_s#moved2times,currentxis15 最佳答案 您不能在Ruby中覆盖复合赋值运算符。任务在内部处理。您应该覆盖+,而不是+=。plane.a+=b与plane.a=

  7. ruby - 为什么 return 关键字会导致我的 'if block' 出现问题? - 2

    下面的代码工作正常:person={:a=>:A,:b=>:B,:c=>:C}berson={:a=>:A1,:b=>:B1,:c=>:C1}kerson=person.merge(berson)do|key,oldv,newv|ifkey==:aoldvelsifkey==:bnewvelsekeyendendputskerson.inspect但是如果我在“ifblock”中添加return,我会得到一个错误:person={:a=>:A,:b=>:B,:c=>:C}berson={:a=>:A1,:b=>:B1,:c=>:C1}kerson=person.merge(berson

  8. ruby - Sinatra + Heroku + Datamapper 使用 dm-sqlite-adapter 部署问题 - 2

    出于某种原因,heroku尝试要求dm-sqlite-adapter,即使它应该在这里使用Postgres。请注意,这发生在我打开任何URL时-而不是在gitpush本身期间。我构建了一个默认的Facebook应用程序。gem文件:source:gemcuttergem"foreman"gem"sinatra"gem"mogli"gem"json"gem"httparty"gem"thin"gem"data_mapper"gem"heroku"group:productiondogem"pg"gem"dm-postgres-adapter"endgroup:development,:t

  9. ruby-on-rails - 什么会导致与 APNS 的连接间歇性断开连接? - 2

    我有一个ruby​​脚本可以打开与Apple推送服务器的连接并发送所有待处理的通知。我看不出任何原因,但当Apple断开我的脚本时,我遇到了管道损坏错误。我已经编写了我的脚本来适应这种情况,但我宁愿只是找出它发生的原因,这样我就可以在第一时间避免它。它不会始终根据特定通知断开连接。它不会以特定的字节传输大小断开连接。一切似乎都是零星的。您可以在单个连接上发送的数据传输或有效负载计数是否有某些限制?看到人们的解决方案始终保持一个连接打开,我认为这不是问题所在。我看到连接在3次通知后断开,我看到它在14次通知后断开。我从未见过它能超过14点。有没有人遇到过这种类型的问题?如何处理?

  10. ruby - Ruby 中字符串运算符 + 和 << 的区别 - 2

    我是Ruby和这个网站的新手。下面两个函数是不同的,一个在函数外修改变量,一个不修改。defm1(x)x我想确保我理解正确-当调用m1时,对str的引用被复制并传递给将其视为x的函数。运算符当调用m2时,对str的引用被复制并传递给将其视为x的函数。运算符+创建一个新字符串,赋值x=x+"4"只是将x重定向到新字符串,而原始str变量保持不变。对吧?谢谢 最佳答案 String#+::str+other_str→new_strConcatenation—ReturnsanewStringcontainingother_strconc

随机推荐