【发布时间】:2018-02-21 08:14:28
【问题描述】:
我在当前的 Android 项目中使用 Paho-Mqtt 客户端从服务器获取实时提要。根据我的要求,我只需要 MQTT 服务,而应用程序在前台。并且应用程序的每个屏幕都链接到不同的 mqtt-topics。示例:
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 服务,什么时候应该断开连接?
- 我可以在 onResume() 函数中连接(和订阅)MQTT 服务 每个活动和 (unscubscribe &) 断开 onPause() 函数。
否则,
- 我可以在 Application 的 onCreate() 函数中连接到 MQTT 服务 因此,我可以在整个应用程序中保持客户端连接,并且 在个人活动期间进行订阅和取消订阅 onResume()/onPause() 函数。
这两种方式都很可怕,尤其是第二种方式,当应用不再在前台时,无法断开 MQTT 服务。因为没有直接的方法来处理 Android 应用程序正在后台运行或被终止的事件。
谁能给我建议以最好的方式处理这个问题?
【问题讨论】:
-
Firebase push notifications(不要指望你的后台服务能够保持连接 - 因为 Android Oreo)和 Websockets 而不是 MQTT(因为防火墙)是你需要的 ;-)
-
我不想让我的连接永远在后台保持活跃,但需要在应用程序处于前台期间(在所有活动中)保持活跃。
-
现代架构是一个单个活动和多个片段(或最近:多个视图)。
-
问题是这些 MQTT 相关活动中的每一个都已经有自己的片段(标签样式/导航抽屉)。因此,这种方法对我来说不是最好的。
-
没什么私人的,但我想知道为什么你的问题被赞成。您应该在separate clear questions 中拆分您尝试解决的问题,并提供您已经尝试过的代码。
标签: java android android-service mqtt paho