L'attività Android Paho MQTT sveglia l'attività

Sto cercando di utilizzare la libreria Paho Android MQTT ( scaricata da qui ).
L'applicazione di esempio "funziona bene", i methods "abbonati" e "pubblica" funzionano bene anche quando l'applicazione di esempio è in esecuzione.
Quando lo chiudo, il dispositivo non riceve più notifiche di messaggi.
Qualcuno ha un'esperienza come modificare / implementare correttamente il servizio per ricevere il messaggio anche se l'applicazione non è in esecuzione?

Grazie!

  • Come faccio ad utilizzare la concessione di adb o l'annullamento di adb?
  • Ottenere l'elenco dei processi in esecuzione e uccidere i loro servizi di background
  • Android getAllNetworkInfo () è Deprecated. Qual è l'alternativa?
  • SRV registra l'ordine recuperato da un server DNS
  • Perché le ricette promuovono il getItemViewType e getViewTypeCount imperativo quando non sembra necessario?
  • Devo utilizzare AppCompat v7 se il minsdk è 14
  • Come passare i dati formattati da JSON da un WebView a una pagina HTML
  • Errore durante l'accesso a Location Android (GPS e networking)
  • Come posso creare un bordo rettangular arrotondato per GridView su Android?
  • HashMap non può essere lanciato in java.lang.string
  • MongoDB su Android
  • Android ScrollView rifiuta di scorrere verso il basso
  • 5 Solutions collect form web for “L'attività Android Paho MQTT sveglia l'attività”

    È necessario implementare un servizio di background: http://developer.android.com/training/run-background-service/index.html

    Oppure a seconda del caso di utilizzo è ansible implementare notifiche push sul lato server e riceverle una volta che il client non è sottoscritto al broker MQTT.

    Per quanto capisco l'argomento Paho port tutto ciò di cui hai bisogno. Nella mia applicazione, il servizio paho mqtt non si ferma mai fino a quando lo voglio. Ho registrato il servizio Paho nel manifesto su Android con il seguente snippet.

    ‹!-- Mqtt Service --› ‹service android:name="com.ibm.android.service.MqttService" /› 

    Questo dovrebbe fare il trucco.

    Maggiori informazioni nella descrizione di http://www.eclipse.org/paho/files/android-javadoc/index.html

    Il servizio Mqtt è in qualche modo biblioteca rispetto al servizio generale. Connette semplicemente il broker dato e sottoscrive argomenti specifici dalla tua applicazione. L'inventario MqttAndroidService non conosce il broker e gli argomenti affatto dopo che è stato avviato da Android OS.

    Quindi l'approccio corretto è avere un servizio backend per la tua applicazione, che conosce il dettaglio su broker e argomenti. E il tuo servizio è responsabile di [re] connettere Mqtt broker e sottoscrivere argomenti nel momento giusto.

    La libreria Android di Paho funziona bene. È semplicemente difficile mantenere lo stato di connessione, una volta che l'applicazione entra in background. Per fornire altre funzionalità come la memorizzazione delle opzioni di connessione, gli argomenti a pub / sub durante lo stato di background richiedono alcune riscritture a livello di libreria.

    Le mie osservazioni: –

    1. Una volta stabilita la connessione, MqttService mantiene la connessione viva anche se l'applicazione viene in background. A less che il responsabile del servizio del sistema non uccida l'applicazione ei suoi servizi. Tutto questo è ansible a less che la networking rimanga ininterrotta.

    2. Il servizio dispone di un proprio gestore di allarmi per mantenerlo vivo.

    Ho fatto un esperimento e ho fatto una piccola soluzione che può aiutare a mantenere accessibile l'object di connessione in tutte le attività dell'app. A less che non si disconnetti.

    PS: – La soluzione è dannatamente semplice. Ma funziona semplicemente come un fascino.

    https://github.com/ameykshirsagar/mqttconnectionpersistence

    Devo ancora fare un'implementazione che mantenga la MqttService viva anche dopo che l'attività dell'app è stata distrutta

    Se per 'vicino' intendi 'forza stop' l'applicazione, allora sì che interrompe completamente l'applicazione e non riceverai messaggi (ma è probabilmente quello che l'utente ha sempre voluto).

    Se però, per "vicino" intendi l'utente / Android che uccide l'applicazione, non ricevi le notifiche perché non sei più "connesso" al mediatore.

    Una soluzione sarebbe quella di creare un Service personalizzato per gestire le connessioni.

    Checkout la mia risposta qui per una soluzione dettagliata di ciò che ha funzionato per me.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.