gpt4 book ai didi

android - Android 应用程序关闭时如何保持 Web 套接字连接处于 Activity 状态

转载 作者:行者123 更新时间:2023-12-02 14:09:36 24 4
gpt4 key购买 nike

我正在寻找一个应用程序,它可以向 websocket 发送消息,以便在计算机内的特定参数发生变化时启用通知。参数在计算机中发生变化,通过 websocket 传输,然后到达我的应用程序。这部分是正确的,对吗?

即使我的应用程序关闭,我如何接收这些 websocket 通知?这就是后台数据吧?这应该很简单吗?我的应用程序在关闭时不需要向 Web 套接字发送消息。它所需要做的就是在关闭时接收消息。理想情况下,它会说“参数发生变化时告诉我!”安装时,然后在安装到设备上时永远保持连接。

此外,网络套接字由第三方托管,因此我无权访问它可能提供的任何服务器设置。

编辑:我觉得我在这一切中遗漏了一个重要的概念。消息系统在关闭时如何接收推送通知?通过网络套接字,对吧?那么即使消息应用程序关闭,它也会收到数据吗?

最佳答案

过去几周我一直在解决类似的问题。这就是我所做的:

  1. 我正在使用 AutoBahn Android 来实现 WebSocket。我怀疑任何其他实现的工作原理都应该有点相似。
  2. 基本上有 3 个调用来实现 websocket 处理程序:
    1. onOpen()
    2. onReceiveMessage()
    3. onClose()
  3. 以及您在 WebSocket 连接中使用的 3 个调用:
    1. 连接()
    2. 断开连接()
    3. sendMessage()
  4. 现在这就是棘手的地方了!您必须保持连接有效。我想到的第一个解决方案是明显的Service。但是 Service 本身并不是一个很好的方法,因为它会在应用程序的 UI 线程上工作。大多数时候,它会做它的事情,不会打扰你或对你造成任何伤害。然而,当你确实必须打开应用程序的用户界面时(我有一个界面,它对我来说很重要),这会给你带来无尽的委屈!无论如何,我似乎无法以非常完美的方式实现它(我的意思是我曾经多次失去连接)。
  5. 因此,我扩展了一个 AsyncTask,并在 doInBackground() 方法中调用了一个名为 mWSConnectionStart() 的函数,该函数基本上要求 WebSocketConnection 连接并执行其操作。与此同时,我从 AsyncTask postUpdate() 以防我需要构建 Notification

这对我来说效果很好,我希望这个方法也适合你。

PS:我一直无法解决的一个问题是CPU利用率高。祝你过得更好!

PSS:更新:我刚刚看到在我的设备上,Whatsapp(我一直在对我的应用程序性能进行基准测试)比我的应用程序具有更高的 CPU 利用率(电池)!也许它与 WebSockets 有关。

编辑:我真的建议使用 GCM 而不是 WebSocketConnections。我们正计划自己向 GCM 迈进。原因是它不需要太多的服务器端维护,而且它可以自动执行我们的许多任务。

关于android - Android 应用程序关闭时如何保持 Web 套接字连接处于 Activity 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24771872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com