Biblioteca Android di Paho funziona bene. È difficile mantenere lo stato della connessione, una volta che l'app viene messa in background. Per fornire altre funzionalità come la memorizzazione delle opzioni di connessione, gli argomenti su pub/sub durante lo stato di background necessitano di una riscrittura a livello di libreria.
Le mie osservazioni: -
Una volta stabilita la connessione, MqttService mantiene la connessione in vita anche se l'applicazione va sfondo. A meno che il responsabile del servizio del sistema non uccida l'app & i suoi servizi. Tutto questo è possibile a meno che la rete rimanga ininterrotta.
Il servizio dispone di un proprio gestore allarmi per mantenersi in vita.
Ho fatto un esperimento e ho creato una piccola soluzione che può aiutare a mantenere l'oggetto di connessione accessibile in tutte le attività dell'app. A meno che non ti disconnetti.
PS: - La soluzione è dannatamente semplice. Ma funziona come un fascino.
https://github.com/ameykshirsagar/mqttconnectionpersistence
io sono ancora a fare un'implementazione che mantiene il MqttService in vita anche dopo l'attività dell'app viene distrutta
fonte
2016-07-21 18:22:42
Sei mai riuscito a risolvere il tuo problema? Mi sto imbattendo in un problema simile cercando di mantenere il servizio in esecuzione anche dopo che l'applicazione è stata chiusa. –
Non ancora. Sfortunatamente sono troppo impegnato ora (al lavoro) per affrontare questo progetto di hobby, ma ti invierò la mia soluzione, se riuscirò a farlo funzionare. – wyzard
Ho fatto dei progressi. Ho implementato un servizio (START_STICKY), che contiene metodi MqttClient (e setCallback, connect, subscribe ecc.). In questo modo ho ottenuto che la mia applicazione ricevesse le notifiche di callback anche se la mia attività non è in esecuzione. In questo momento il mio problema è: su dispositivi Xiaomi non riesco ad implementare la funzione 'start service on boot', perché MIUI ha un componente Security incorporato, che lo nega, ma questo è un altro problema. – wyzard