附近连接2.0:连接成功,立即断开连接

2023-11-29

我正在尝试将附近连接 2.0 与P2P_CLUSTER连接策略,并且我在让我的设备连接并保持连接时遇到问题。根据我的跟踪日志,看起来设备已成功连接,然后立即断开连接。

请注意,它有时也会成功运行相同的代码,然后保持连接。我不知道是什么让它有时工作而有时失败,也不知道为什么节点会自动断开连接。但是,我确信我的代码中没有发出“断开连接”。它来自于较低层次的东西。

以下是我当前看到的事件顺序:

  • 我们发现另一个节点(即,点击 onEndpointFound 回调),然后发出 requestConnection
  • 我们为该端点点击了 onConnectionInitiated。 (在这里检查 info.isIncomingConnection() ,这是否是对我们自己的请求的响应,或者是其他地方发起的请求似乎并不重要。)
  • 我们发出acceptConnection(并将我们的状态移至PENDING)
  • 我们点击 onConnectionResult 并获得“成功”状态。一切都很好(双方都短暂地认为他们是有联系的)。
  • 紧接着,我们点击了 onDisconnected (双方都进入未知状态)

更新:在acceptConnection之前添加了200ms延迟

这是一个很大的改进,设备现在几乎总是建立成功(且持久)的连接。但有时需要尝试 2-3 次。

例如,以下是运行一个简单的测试用例时发生的情况(使用一台广告设备和一台发现设备,没有复杂的因素)。从发现者的角度来看,它看起来像这样:

  • we hit onEndpointFound and requestConnection
  • we hit onConnectionInitiated对于我们请求的连接,并接受它
  • we hit onConnectionResult连接成功。
  • 很快,我们就击中了onDisconnected
  • 我们停止发现,等待 3 秒,重新启动发现
  • 我们第二次执行上述所有操作,再次断开连接

但第三次运行连接过程时,我们获得了良好的持久连接,并且能够可靠地发送和接收数据。

更新:广告商端异常导致断开连接?

我发现了一长串这样的自动断开连接。每次,广告商在断开连接之前都会遇到此异常。

10-09 19:17:26.365 29232-29232/? E/SearchServiceStarter: Task 174 failed or timed out. Client 128565203126930423 disconnecting from SearchService!
                                                     java.util.concurrent.CancellationException: Task was cancelled.
                                                         at com.google.common.util.concurrent.d.cp(SourceFile:75)
                                                         at com.google.common.util.concurrent.d.get(SourceFile:57)
                                                         at com.google.common.util.concurrent.cj.n(SourceFile:2)
                                                         at com.google.common.util.concurrent.ay.l(SourceFile:50)
                                                         at com.google.common.util.concurrent.ba.run(SourceFile:5)
                                                         at com.google.android.apps.gsa.shared.util.concurrent.a.bc.run(SourceFile:2)
                                                         at android.os.Handler.handleCallback(Handler.java:808)
                                                         at android.os.Handler.dispatchMessage(Handler.java:103)
                                                         at android.os.Looper.loop(Looper.java:193)
                                                         at android.app.ActivityThread.main(ActivityThread.java:5299)
                                                         at java.lang.reflect.Method.invokeNative(Native Method)
                                                         at java.lang.reflect.Method.invoke(Method.java:515)
                                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:831)
                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:647)
                                                         at dalvik.system.NativeStart.main(Native Method)

这有助于您诊断问题吗?


哎呀!这是“附近连接”中的竞争条件。它已在下一个即将发布的版本中修复。作为临时解决方案,请稍微延迟您的接受连接(~100 毫秒?)。

编辑:从 Google Play Services 11.6.0 开始应该修复此问题

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

附近连接2.0:连接成功,立即断开连接 的相关文章

  • 无法理解如何使用 Android AWS SDK

    我正在构建一个将使用 Amazon 的 SimpleDB 服务的应用程序 它使用亚马逊的AWS 安卓 SDK http aws amazon com sdkforandroid 据我了解 不建议我将 Amazon 凭证 访问 ID 和密钥
  • Android 通知栏和标题栏的大小?

    android 有没有办法获取通知栏和标题栏的大小 目前我通过以下方式获取显示宽度和高度 Display display getWindowManager getDefaultDisplay int width display getWid
  • 以编程方式切换片段

    我有一个带有两个片段的寻呼机 每个片段都有自己的 xml 我的问题是是否可以以编程方式从一个片段切换到另一个片段并触发任何侦听器 此致 我假设你的意思是浏览器 http developer android com reference and
  • 造型 Sherlock ActionMode 背景

    似乎无法设置 ActionMode 背景的样式 我已经覆盖了操作栏背景 但设置 ActionMode 背景似乎不起作用
  • 如何取消/取消订阅协程 Flow

    当我尝试提前取消流程时 我注意到一个奇怪的行为 看一下下面的例子 这是一个发出整数值的简单流程 private fun createFlow flow repeat 10000 emit it 然后我打电话给createFlow使用此代码的
  • 隐藏加载失败的图片

    我有一个 Android 应用程序 它生成一些在本地 Webkit 视图中呈现的 HTML HTML 生成的细节实际上并不那么重要 除了 大部分来自一个地方 我无法改变它 HTML 周围的模板 包括页眉 页脚 HEAD 等 CSS 和 Ja
  • 如何在Android上创建原生C++库?

    我需要用C 编写一个动态链接库 供Android上的Java使用 据我所知 它应该是 so 库 但我不知道该怎么做 我尝试了 Cygwin 但它崩溃了 海湾合作委员会1 cpp usr lib gcc i686 pc cygwin 4 3
  • Android 7.0+ 屏幕关闭时前台服务无法接收位置更新

    我正在尝试创建一个 Android 应用程序 在设备屏幕关闭时连续实时记录设备位置数据 我的代码可以在 Android 6 0 及更早版本中正常运行 但 Android 7 0 似乎会破坏我的应用程序 我已经实现了一个 Android 前台
  • 如何从c调用Java函数

    我被这个问题困扰了 我需要从 c c 调用 Java 函数 在示例和教程中 我只看到一个java应用程序调用一个c方法 并在同一个方法中调用另一个java方法 但我想做的是从代码的任何部分调用java方法 这就是我所拥有的 static J
  • 如何在Android中设置音频均衡器

    我正在制作一个媒体播放器 其中需要使用 搜索栏 将均衡器效果设置为 低音 可怕 摇滚 流行 中 我得到了一个链接 其中使用了一些 NDK 库来执行此操作 是否有任何 Java 库可以执行此操作 请解释执行此操作的逻辑是什么 Override
  • 在手机上单步执行 Android 代码 - 大行号差异

    我正在尝试调试与 Samsung Captivate Galaxy S 上的 ListView 相关的一些代码 我在代码中的某个位置放置了断点 当它停止时 我会在堆栈上返回几帧到 ListView 源 现在 我可以预期会出现一些不匹配的情况
  • android:web服务图像替换为本地文件夹中的图像

    我进入了 Android 聊天应用程序的最后阶段 我在使用图像和网络服务时遇到了一些问题 因此 当我选择图像并将该图像发送到 Web 服务时 我从服务获取 URL 我如何将该网址转换为本地文件夹中的图像 我很困惑如何才能使其发挥作用 我想在
  • Gradle 从服务器收到状态代码 403:禁止

    由于这个错误 我无法构建我的 android 项目 Gradle 无法获取https www jitpack io com github Raizlabs DBFlow dbflow 3 1 1 dbflow 3 1 1 pom https
  • Firebase API 密钥限制不适用于 Android 应用程序包名称和 SHA1 指纹

    我们正在使用 Google Firebase 获取我们应用程序的 CrashLytics 数据 以及通过google services json文件被提出作为一个安全问题 因为应用程序 apk 文件可以被逆向工程来获取该文件 然后攻击者可以
  • Cordova 的内容安全策略未加载外部脚本和样式表(404 错误)

    我目前将 Cordova 的 Content Security Policy 元标记设置为 如果我运行 Android 模拟器 我会看到以下错误 拒绝加载样式表 https min css https min css 因为它违反了以下内容安
  • 在 SQLite 中加密数据

    如何加密我的数据 就我研究的解决方案而言 有两种方法 使用android提供的算法加密数据 我使用android提供的 Cipher 来加密我的数据 但我在检索大量记录的数据时遇到问题 导致应用程序的性能显着降低 我对整个数据库进行了编码
  • Android:从http获取文件并存储在SDCard中

    我已经遵循了许多类似问题中所写的内容 但仍然存在问题 从jsp我得到一个pdf 如果我转到URL 浏览器会自动打开pdf jsp页面会执行类似以下操作 Gets the pdf from the database BufferedInput
  • 请求位置更新参数 android

    我对这个参数感到困惑 locationManager requestLocationUpdates provider 60000 10 listener 这是它的执行方式location update listener if time 60
  • 从 Android 中的 ListView 中删除项目时遇到 IndexOutOfBoundException?

    我有一个simple list item multiple choicelistview 在我的布局中 我试图从中删除所有选定的项目 我知道如何删除它 但删除项目时遇到两个主要问题 我的程序不会删除超过 2 个项目 例如如果我选择了 4 个
  • 程序类型已存在:android.support.v4.app.BackStackRecord

    我升级了Android Studio 在最新版本中发现了很多问题 尽管存在很多类似的问题 但我检查了所有答案 但没有一个对我有用 这是我在编译代码时遇到的错误 已存在的程序类型 android support v4 app BackStac

随机推荐

  • SQL Getdate的精度?

    我正在试验一个程序 该程序可以高速将数据插入 SQL 2005 Server 数据库 在 XP SP3 上 这是为了收集时序数据 以便我可以评估设计的不同方面 我的基本设置包括将数据插入到如下表中 并使用仅指定有效负载字段的 SP crea
  • 错误:#1071 - 指定的密钥太长;最大密钥长度为 1000 字节 - mysql 5.0.91

    我使用的是 mysql 5 0 91 我需要保存 URL 有些很小 有些很长 我想用varchar 2000 但我收到错误 1071 指定的密钥太长 最大密钥长度为 1000 字节 使用 mysql 5 0 91 在我的主机上保存 URL
  • 在 Apache 的 Lucene 中使用默认和自定义停用词(奇怪的输出)

    我正在使用 Apache 的从字符串中删除停用词Lucene 8 6 3 和以下 Java 8 代码 private static final String CONTENTS contents final String text This
  • 基类具有不同初始化参数时的方法解析顺序

    我正在尝试理解 Python 中的 MRO 虽然这里有各种各样的帖子 但我并没有特别得到我想要的 考虑两个类A and B源自BaseClass 每个都有一个 init 采用不同的参数 class BaseClass object def
  • 产品方法重载

    所以我正在CodeHS上解决这个问题 然后我被困了很长时间所以决定在这里问 练习是重载 Product 方法以允许将其他类型的值相乘 两个双打 一个 int 和一个 double 一个 double 和一个 int 三个整数 三双 publ
  • 如何比较两个卷并列出修改的文件?

    我有2个硬盘卷 一个是另一个的备份映像 我想比较这些卷并列出所有修改的文件 以便用户可以选择他 她想要回滚的文件 目前 我正在递归新卷并将每个文件的时间戳与旧卷的文件进行比较 如果它们位于旧卷中 显然这是一种错误的做法 这既耗时又错误 有没
  • 2x 提交按钮来操作不同的 URL

    需要 jquery 的帮助来更改我的表单操作 具体取决于按下提交按钮 我找到了一些 javascript 代码 但它不起作用
  • java.lang.VerifyError:堆栈映射与异常句柄处的堆栈映射不匹配

    当我为 testcontroller 实现方面时 启动 springboot 应用程序时出现以下异常 org springframework beans factory BeanCreationException 错误 创建文件中定义的名为
  • HttpWebRequest 中的 http 参数值的大小是否有限制?

    我正在测试几个不同的公共 RESTful API 每个 API 的 http 参数值名称都不同 但在概念上 所有 API 的工作原理都是相似的 然而 这些公司都没有关联 所以这一定是我这边的事情 在 NET 中 尝试获取 HttpWebRe
  • 观察具有传递项目依赖关系的构建?

    您好 我对 C NET 相当陌生 我有一些关于项目依赖性的问题 第一 我的情况 我有一个解决方案 让我们称之为 MyLibrary 它有几个 dll 输出项目 这些项目相互依赖 作为项目引用 也依赖于一些外部库 dll 引用 我确保该项目引
  • 命令“grunt server”的指南针错误

    我正在运行一个安装了nodeJs ruby yeoman compass等的项目 现在我用命令运行我的项目 gt grunt server or gt grunt server force 但它给了我罗盘的以下错误 E CRM worksp
  • 在 MYSQL 中从文本框中的逗号分隔文本添加新行

    我有一个 PHP MYsql 问题 我试图在每个逗号后插入一个新行 基本上 我想要这个功能 假设我们有一个包含以下文本的文本框 篮球 网球 足球 排球 gt 提交按钮 单击提交按钮后 我想在一个表中的每个单词后插入一个新行 基本上 我希望数
  • 在 Eclipse 上测试时如何传递 -D System 属性?

    我正在 Windows 上的 Eclipse 上进行开发 代码部署在 Unix 上 我正在使用 System getProperty key 获取系统属性值 如何在 Eclipse 中传递它 以便我不必修改代码并且它可以在 Eclipse
  • Delphi IDE 中出现“无法更改 OnShow 或 OnHide 中的可见项”错误

    我在使用 Delphi 2006 IDE 时遇到一个非常奇怪的问题 如果 IDE 最小化 并且 PC 被锁定 我返回电脑 解锁并最大化 IDE 有时会收到错误 无法更改 OnShow 或 OnHide 中的可见项 如果发生这种情况 我必须使
  • 挂钩 ASP.Net Core 的 Razor 页面执行

    我正在尝试加入ExecuteAsync 使用我的自定义视图页面 继承自RazorPage 在里面RazorPage类中有一个抽象方法 public abstract Task ExecuteAsync 解析 cshtml 文件 视图 时 该
  • 在 C++ 和 C# 之间传递向量结构

    我有 C 非托管代码 我想从 C 访问它 所以我遵循了一些教程 为我的项目构建了一个 dll 顺便说一句 只有一个类 现在我想从 C 使用它 我使用 p invoke 如下 我的问题是 是否可以编组我的窗口点 以便我可以将它作为向量传递到我
  • 在 Selenium Grid 中指定 Windows 版本(或特定机器)

    我正在设置一个 Selenium 网格 以便涵盖一个测试矩阵 该矩阵需要全面涵盖以下组合 提供相同服务的三台服务器 Windows Server 2003 2008 和 2012 和十个客户端 XP Win7 win8 和 win8 1 将
  • 两个第 n 个位置字符之间的正则表达式

    我试图根据位于两个字符 之间的文本字符串获取一些数据 但可能是第 n 个位置的单词 目前我有以下内容 2 处理以下数据 D20 Mbps U10 Mbps TC4 P 我期望得到的地方 U10 但当第一部分捕获时什么也得不到 D20 Mbp
  • 在 C# 中,如何实例化方法内传递的泛型类型?

    我如何实例化我的类型 TInstantiateType
  • 附近连接2.0:连接成功,立即断开连接

    我正在尝试将附近连接 2 0 与P2P CLUSTER连接策略 并且我在让我的设备连接并保持连接时遇到问题 根据我的跟踪日志 看起来设备已成功连接 然后立即断开连接 请注意 它有时也会成功运行相同的代码 然后保持连接 我不知道是什么让它有时