gpt4 book ai didi

java - 何时在后台不需要 MQTT 的 Android 应用程序上断开 MQTT 服务

转载 作者:太空狗 更新时间:2023-10-29 13:50:16 25 4
gpt4 key购买 nike

我在我当前的 Android 项目上使用 Paho-Mqtt 客户端从服务器获取实时提要。根据我的要求,当应用程序在前台时,我只需要 MQTT 服务。应用程序的每个屏幕都链接到不同的 mqtt 主题。示例:

If user in Activity A, I need to subscribe to a MQTT topic A.  
If your move to Activity B I need to unsubscribe from topic A and subscribe to topic B.

现在的问题是,什么时候应该连接到 MQTT 服务,什么时候应该断开连接?

  1. 我可以在 onResume() 函数中连接(和订阅)MQTT 服务每个 Activity 和 (unscubscribe &) 断开 onPause() 函数。

否则,

  1. 我可以在应用程序的 onCreate() 函数中连接到 MQTT 服务所以,我可以在整个应用程序中保持客户端连接,并且在个人 Activity 期间进行订阅和取消订阅onResume()/onPause() 函数。

这两种方式都很糟糕,尤其是第二种方式,当应用程序不再在前台时,无法断开 MQTT 服务。因为没有直接的方法来处理 Android 应用程序进入后台或终止的事件。

谁能给我建议以最好的方式处理这个问题?

最佳答案

两个人为此接洽:

  1. 您可以在每个 Activity 中都有一个 MQTTClient 并在您的 Activity “内部”处理该客户端。
  2. 或者,这是一种资源更友好的方法,您可以在放置 MQTTClient 的位置创建一个后台服务。

你仍然需要在onResume() onPause()中订阅和取消订阅。与您使用 BroadcastReceiver 或 Events 一样。

如果您想更好地控制生命周期的状态,请查看 Lifecycle.Events: Handling Lifecycles with Lifecycle-Aware Components

用它来执行sub或unsub。

@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
public void connectListener() {
...
}

另请查看 RxJava这也可能有助于您找到解决方案。

祝你好运。

关于java - 何时在后台不需要 MQTT 的 Android 应用程序上断开 MQTT 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48900946/

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