如何在android服务中处理保持活动连接

2023-12-23

我正在将 asmack 用于 Android IM 应用程序,其中我使用带有 AIDL 接口的远程服务。

代替onStartCommand我的服务方法我编写的代码如下。我创建连接,然后使用它登录。当有人在里面运行我的应用程序时onCreate我的应用程序的主要活动的方法运行我的服务getApplicationContext.StartService(serviceIntent)。它工作正常,但几分钟后(有时 10 分钟,有时超过 10 分钟)messageListener我将其附加在服务站内以接收消息。但我知道连接存在,因为我同时使用xmppConnection要发送消息,它会向用户 B 发送消息,但不会监听来自用户 B 的消息。我不知道为什么我的监听器不再听到消息。

public int onStartCommand(final Intent intent, final int flags, final int startId) {
    ConnectionConfiguration config = new ConnectionConfiguration(URL, MyPort, Host);
    xmppConnection = new XMPPConnection(config);
    xmppConnection.connect();
    xmppConnection.login("[email protected] /cdn-cgi/l/email-protection", "testpass");
    xmppConnection.addPacketListener(myMessageListener, new PacketTypeFilter(Message.class));
    return START_STICKY;
}
private PacketListener myMessageListener = new PacketListener() {
    public void processPacket(Packet packet) {
        Message msg = (Message) packet;
    }
}

请指导。


您的连接是否在您没有注意到的情况下因错误而关闭? 您应该为每个回调添加连接侦听器和日志以调试连接状态。

在 Android 上,可能有一个“僵尸”套接字:您仍然可以向它写入数据,但接收者永远不会收到消息,当然您也无法从中读取新消息。 网络状态更改后可能会发生这种情况。

检测我使用XMPP平 http://xmpp.org/extensions/xep-0199.html,由客户端从警报发起(每 15 分钟一次,不精确重复)。我禁用空白保持活动状态。 这会破坏客户端和服务器(NAT 或代理)之间存在的大多数超时机制。 另外,如果您没有收到任何 ping 应答(例如在 20 秒内),您可以假设连接状态不佳并手动重新连接。

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

如何在android服务中处理保持活动连接 的相关文章

  • 如何检测和管理来电(Android)?

    我想创建一个应用程序 可以检测来电并在一定数量的蜂鸣声 响铃 后启动我的自定义活动 我的意思是在 2 或 3 或 5 声蜂鸣声 响铃 后我的activity被触发 我该怎么做 Thanks 我认为您无法计算自来电开始以来电话响了多少次 无法
  • 使用 Google Places Autocomplete API 的 REQUEST_DENIED 响应

    我正在开发 Android 应用程序 它使用谷歌的地点自动完成 API 当尝试点击以下网址时 我得到的答复如下 预测 状态 REQUEST DENIED 我从下面的链接获得了 API 密钥Google API 控制台 http code g
  • 检索子值 -firebase-

    System out println ref child email protected cdn cgi l email protection child email 我正在尝试获取 child 的值 但我始终获取该值的 URL 当我尝试使
  • 我可以在 firebase android 中加载另一个用户个人资料图像吗?

    如果我有其他用户的电子邮件但我以其他用户身份登录 我是否可以加载其他用户的个人资料图像 如果您使用 Firebase Storage 那么从技术上讲是的 它只是一个您可以从中检索任何文件的文件系统 如果不伪造您的应用程序 获取 api 密钥
  • 按钮未显示在屏幕上

    我创建了一个应用程序 其中显示带有图像和文本的列表视图 我在页面末尾添加按钮 但这没有显示在屏幕上 我是 Android 新手 我该如何解决这个问题 这是我的 UI XML 代码
  • 如何在 Android 上创建 YouTube 的双击手势?

    我在 Android 上有 exoplayer 的应用程序 我已经创建了 youtube双击手势用动画向前或向后跳跃 10 秒 如何在双击时创建具有波纹效果的半圆 像这样 这个怎么做 我也想实现这样的功能 所以我自己编写了它来 复制 You
  • Android-工具栏中的SearchView

    我只想在我的应用程序中添加 searchview 但我不想搜索任何东西 只是我想要用户输入的查询 到目前为止 我尝试了这段代码 但是当我运行我的应用程序时它崩溃了 Update 我尝试了这个 但即使我的应用程序崩溃了 main menu x
  • 如何在 Firebase 远程配置中从 JSON 获取值

    我是 Android 应用开发和 Firebase 的新手 我想知道如何获取存储在 Firebase 远程配置中的 JSONArray 文件中的值 String 和 Int 我使用 Firebase Remote Config 的最终目标是
  • 监听什么来检测 Android 中的请勿打扰模式更改?

    我希望我的应用程序在手机设置为请勿打扰模式 仅限闹钟 仅限优先级或完全静音 时显示通知 通过聆听 这效果非常好android media RINGER MODE CHANGED在快速设置中检查此模式并在已选择的选项卡中选择模式时 但是 当选
  • android 确定设备是否采用从右到左的语言/布局

    有没有办法确定设备是否使用从右到左的语言 例如阿拉伯语 而不是从左到右的语言 英语 与较旧的 API 级别 低至 10 兼容的东西是必要的 SOLUTION 我最终在接受的答案中使用了 xml 方法 接下来 我还添加了此处指示的代码 以应对
  • 从多个选项卡中的编辑文本字段获取文本

    我正在尝试创建一个使用选项卡作为输入表单的 Android 应用程序 基本上 我希望对其进行设置 以便用户可以在一个选项卡上输入一些信息 然后提交该信息 或者转到另一个选项卡并输入更多信息 然后从两个选项卡提交信息 我正在使用操作栏和片段来
  • window.onbeforeunload 在 Android Chrome 上不会触发 [alt.解决方案?]

    我开发了一个简单的聊天应用程序 我正在使用 window onbeforeunload当有人关闭选项卡 浏览器时 基本上是当用户离开房间时 通知其他用户 这是我的代码 scope onExit function scope chatstat
  • Android 改变 ImageView / Bitmap 的颜色

    我需要找到一种方法来改变 Android 中位图的颜色 我需要在我的应用程序中平滑地替换 更改椭圆形图像的颜色 具体取决于int价值 我需要类似的东西myValue 5比改变我的图像的颜色RED and if myValue 322将颜色更
  • 如何在android中的操作栏中创建Edittext?

    我们可以在操作栏中使用编辑文本吗 在阅读了 Google 中的大量资源后 我找不到如何在操作栏中创建编辑文本 谁能告诉我该怎么做 您可以设置自定义View为了ActionBar像这样 getActionBar setCustomView R
  • 通过列表视图检查动态生成的复选框时遇到问题

    我知道其他成员已经提出了这个问题 一些成员也给出了解决方案 但问题是我没有找到任何适合我的应用程序的解决方案 我正在创建一个应用程序 其中我有一个屏幕 它将显示动态列表视图 其中包含列表项 复选框和三个文本视图 一个用于候选人姓名 另外两个
  • 如何在Android Compose中使用otf类型字体文件?

    我正在学习使用 Android Jetpack Compose 现在我有一个正则 otf字体文件在资产 字体 我想在文本中使用它 java lang RuntimeException Font asset not found commonu
  • ACCESS_BACKGROUND_LOCATION 不适用于低于 Q (29) 的 Android 版本

    我的应用程序面向 Android API 28 根据文档 https developer android com preview privacy location target android 10 我应该要求ACCESS BACKGROU
  • Android - iphone 风格 tabhost [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • [cocos2d-x]当我尝试在 Windows 10 中运行“python android-build.py -p 19 cpp-tests”时出现错误

    当我尝试运行命令时python android build p cpp tests 我收到如图所示的错误 在此之前 我收到了另一条关于 Android SDK Tools 版本兼容性的错误消息 所以 我只是将 sdk 版本从 26 0 0
  • 如何以编程方式创建活动转换?

    我想以编程方式创建一个动画 以从触摸屏点启动具有缩放效果的活动 接下来我模拟缩放输入效果

随机推荐

  • 使用 Javascript 验证单选按钮

    我已经梳理了这里的大量页面 但仍然无法让我的显式验证器工作 基本上 当单击提交按钮时 我希望脚本验证无线电是否已检查 如果检查后什么也不做 如果没有检查 我希望它发布一条警报消息 我的 html 大致如下所示
  • SignalR + Win RT(Windows 8.1) + 使用未签名的证书不起作用[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 经过 4 个多小时的搜索 使 Windows RT SignalR 使用自签名证书工作 找到了 所以我在这里分享一个解决方案 您收到错误 底
  • 如何发送 SOAP 请求?

    我是 SOAP 和 xml 的新手 我读了很多教程 但似乎没有什么是足够清楚的 我有点困惑 到底如何发送 SOAP 请求 我尝试执行此操作的方法是将 SOAP 请求 如下所示 保存为 test Request xml POST Mobile
  • 如何在node.js中逐块进行压缩?

    我正在以块的形式获取压缩网页的内容 并希望在收到每个内容后立即对其进行解压缩 因此我正在尝试执行以下操作 为了可读性而将内容剥离 var decompress function string callback zlib gunzip str
  • 使用宏刷新 Excel 工作簿中的所有数据透视表

    我有一本包含 20 个不同数据透视表的工作簿 有没有简单的方法可以找到所有数据透视表并在 VBA 中刷新它们 Yes ThisWorkbook RefreshAll 或者 如果您的 Excel 版本足够旧 Dim Sheet as Work
  • 使用 OAuth 从 Twitter 获取名字/姓氏/电子邮件

    我专门使用omniauth 来允许通过facebook google twitter 登录我的网站 我存储名字 姓氏和电子邮件 但是 当我从 oauth 提出 twitter auth 哈希时 我只能在 auth 哈希中获得昵称 名称 位置
  • iPhone Web 应用程序的日期选择器

    显示基于 iPhone 的 Web 应用程序的日期选择器的最佳方式是什么 我们可以在 Web 应用程序中显示类似 iPhone 本机日期选择器的内容吗 最简单的方法 可以说是最好的方法 是使用 safari 的内置日期选择器作为输入框 使用
  • 使用 Google Apps 脚本更新 Google 文档中的嵌入图表

    太长了 如何使用文档中的脚本编辑器更新文档中嵌入的表格图表 我知道有一个脚本可以为 Google 幻灯片执行此操作 但我正在尝试在 Google 文档中执行此操作 但找不到任何相关文档 https developers google com
  • 尝试连接到 localhost:5000 Firebase 时出现“无法获取/”

    我正在尝试让 Firebase 上的本地主机服务器正常工作 但我继续在浏览器中收到以下消息 无法获取 我看了一下控制台 它只说 http 本地主机 5000 http localhost 5000 404 未找到 我尝试使用 firebas
  • 外部 swf 卸载后声音继续播放

    我有一个 Flash 应用程序 某种加载外部 SWF 视频播放器的播放列表 我没有对该外部文件的代码访问权限 因此用户可以观看视频或跳到另一个视频 当用户切换到另一个视频时 将加载新的 SWF 文件 问题 如果用户没有看完视频并跳到下一个
  • onClick 里面有两个参数

    我试图在 ReactJs 中的 onClick 上传递两个事件操作 基本上我想要类似的东西 div prop2 value2 this continue project gt 我尝试了 1000 种不同的语法编写方式 div prop2 v
  • 如何将 Python 3 和 Django 与 Apache 结合使用?

    我的目标是使用 Apache 设置 Python 3 我最大的问题实际上是获取 mod python so 在我的一生中 我只找到一个可以下载它的网站 http www modpython org 而我得到的是一堆构建和安装文件 我找不到解
  • Django:在 queryset.update 上发出信号

    如果您使用的是 Django 会发送 pre post delete 信号queryset delete 方法 但不应该也发送 pre post save onqueryset update 也许应该如此 但事实并非如此 update 不调
  • 您在 Netbeans 中创建了哪些有用的宏? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Typescript i18next 不满足约束 'string |模板字符串数组 NextJS

    我正在尝试输入要使用 i18next 进行翻译的对象数组 但变量 navItems 中出现以下消息 我在其中声明 i18next 然后迭代该数组Type NavItemProps does not satisfy the constrain
  • 版权信息的正确语义标签 - html5

    在网站页脚中包含版权声明的最佳且最语义化的标签 方法是什么 将其放入您的
  • 让“$watch”功能远离控制器的最佳实践

    我试图找到一些搬家最佳实践的好例子 watch例如 从控制器到工厂的功能 我发现实际上对于什么是最好的做法并没有一致的意见 我见过注入的例子 rootScope进入工厂并 watch那里的价值变化 另一个建议是尽可能避免它们 并使用ngCh
  • 使用 struct.pack 和 struct.unpack_from 写入数据结构无法正确读取

    我在获取二进制文件中的数据时遇到这个问题 Write data f open path wb start date 2014 1 1 0 0 0 0 end date 2014 2 1 0 0 0 0 for x in range 10 f
  • 检查 HttpWebResponse 是否为空

    我正在向 REST 服务发出 HTTP post 请求 当我收到 HttpWebResponse 返回时 我正在执行以下检查 当我执行 webresponse null 时 我是否还应该检查 responseStream null Http
  • 如何在android服务中处理保持活动连接

    我正在将 asmack 用于 Android IM 应用程序 其中我使用带有 AIDL 接口的远程服务 代替onStartCommand我的服务方法我编写的代码如下 我创建连接 然后使用它登录 当有人在里面运行我的应用程序时onCreate