Paho MQTT Android服务问题

库瓦

我正在开发一个应用程序中实现Paho MQTT Android服务。在测试了Paho提供的示例应用程序之后,我发现我想更改一些事情。

https://eclipse.org/paho/clients/android/

一旦应用程序完全关闭,应用程序服务似乎就会关闭。我希望即使在应用程序关闭后也能保持服务运行,如果有更多消息进入。我也正在寻找一种方法,以便在收到新消息后针对特定活动打开应用程序。

这是消息到达时调用的回调之一,我试图实现一个简单的startActivity来打开特定的活动,但是如果应用程序已关闭/不再运行,它将无法正常工作

如果有人使用过PAHO MQTT Android服务,是否有一种特定的方法可以防止该服务在应用程序关闭时停止运行,并且在收到消息时如何重新打开该应用程序?

    /**
   * @see org.eclipse.paho.client.mqttv3.MqttCallback#messageArrived(java.lang.String,
   *      org.eclipse.paho.client.mqttv3.MqttMessage)
   */
  @Override
  public void messageArrived(String topic, MqttMessage message) throws Exception {

    // Get connection object associated with this object
    Connection c = Connections.getInstance(context).getConnection(clientHandle);

    // create arguments to format message arrived notifcation string
    String[] args = new String[2];
    args[0] = new String(message.getPayload());
    args[1] = topic + ";qos:" + message.getQos() + ";retained:" + message.isRetained();

    // get the string from strings.xml and format
    String messageString = context.getString(R.string.messageRecieved, (Object[]) args);

    // create intent to start activity
    Intent intent = new Intent();
    intent.setClassName(context, "org.eclipse.paho.android.service.sample.ConnectionDetails");
    intent.putExtra("handle", clientHandle);

    // format string args
    Object[] notifyArgs = new String[3];
    notifyArgs[0] = c.getId();
    notifyArgs[1] = new String(message.getPayload());
    notifyArgs[2] = topic;

    // notify the user
    Notify.notifcation(context, context.getString(R.string.notification, notifyArgs), intent,
        R.string.notifyTitle);

    // update client history
    c.addAction(messageString);

    Log.e("Message Arrived", "MESSAGE ARRIVED CALLBACK");

    // used to open the application if it is currently not active
    Intent i = new Intent(context, ConnectionDetails.class);
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    i.putExtra("handle", clientHandle);
    context.startActivity(i);


  }
Pravin Sonawane

我知道这是该问题的较晚答案,但是我想分享一下我所做的事情,因为这可能会对某人有所帮助。

我创建了自己的服务器Service来管理与代理的连接,并始终为每个android设备维护一个连接的实例。

重申该解决方案的功能:

该解决方案的主要特点:

  1. 只要服务处于活动状态,服务就会维护一个实例。
  2. 如果服务被终止,Android将重新启动它(因为START_STICKY)
  3. 设备启动时可以启动服务。
  4. 服务在后台运行,并且始终连接以接收通知。
  5. 如果该服务仍然有效,则startService(..)再次调用将触发它onStartCommand()在这种方法中,我们仅检查此客户端是否已连接到代理,并根据需要连接/重新连接。

在此处查看完整详细的答案

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用PAHO订阅和阅读MQTT消息

来自分类Dev

android-用于发布的Paho MQTT服务

来自分类Dev

如何对挂起的Paho Python Mqtt Single Publish进行故障排除

来自分类Dev

paho-mqtt:回调线程

来自分类Dev

Paho MQTT引发异常

来自分类Dev

取消绑定外部服务Android Paho MQTT ServiceConnectionLeaked错误

来自分类Dev

Eclipse Paho Mqtt-Spring Java配置

来自分类Dev

Eclipse Paho Mqtt:获取java.io.EOF异常

来自分类Dev

Android中MQTT的Eclipse Paho引发错误

来自分类Dev

Paho Mqtt Android连接到代理失败并显示(32103)

来自分类Dev

MQTT Paho Python可靠的重新连接

来自分类Dev

Paho(MQTT)客户端无法连接

来自分类Dev

Paho MQTT Golang协议

来自分类Dev

paho-mqtt不会给我排队的消息

来自分类Dev

Paho中的MQTT无法建立连接

来自分类Dev

Worklight-Paho MQTT Javascript:始终在Android设备上超时并在模拟器中工作

来自分类Dev

Paho MQTT与MQTT Paho Spring集成

来自分类Dev

Paho Mqtt Android连接到代理失败并显示(32103)

来自分类Dev

如何开始使用MQTT Paho JavaScript客户端?

来自分类Dev

如何在必须在多个活动中访问的Android中实现Paho MQTT客户端

来自分类Dev

Paho(MQTT)客户端无法连接

来自分类Dev

Paho mqtt中的SOP违规

来自分类Dev

是否有与Paho MQTT的Python请求会话相似的东西?

来自分类Dev

在小型 linux 板上安装 paho-mqtt 时遇到问题

来自分类Dev

在python中使用paho mqtt处理收到的消息

来自分类Dev

如何使用自签名证书连接到 Android(paho 客户端)中的 Mqtt 服务器?

来自分类Dev

多个订阅的 Paho mqtt 回调

来自分类Dev

Paho-MQTT 检查消息队列大小

来自分类Dev

使用所有 PAHO MQTT ++ 模拟

Related 相关文章

热门标签

归档