Paho MQTT Android Service Проблема

Я внедряю Paho MQTT Android Service в приложение, которое я разрабатываю. После тестирования примера приложения, предоставленного Paho, я обнаружил, что есть несколько вещей, которые я хотел бы изменить.

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

Служба приложений отключается, как только приложение полностью закрывается. Я хотел бы, чтобы служба работала даже после закрытия приложения, если поступает больше сообщений. Я также ищу способ открыть приложение для определенного действия после получения нового сообщения.

Вот один из обратных вызовов, который вызывается при поступлении сообщения. Я попытался реализовать простую функцию startActivity для открытия определенного действия, но он не работает, если приложениезакрыто / больше не работает.

Если кто-то работал со службой Android PAHO MQTT, существует ли какой-либо конкретный способ предотвратить остановку службы при закрытии приложения и как я могу повторно открыть приложение при получении сообщения?

    /**
   * @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);


  }

Ответы на вопрос(0)

Ваш ответ на вопрос