Wie sende ich Ping mit dem Eclipse Paho MQTT-Client?

Wir haben gerade damit begonnen, ein eigenes Push-Benachrichtigungssystem (auf Kundenwunsch) für Android zu entwickeln und haben Eclipse Paho (http://www.eclipse.org/paho/). Unnötig zu erwähnen, dass dieses Projekt wirklich aufregend ist.

Das Problem bei Android besteht darin, dass der MQTT-Client möglicherweise nicht die Möglichkeit hat, in dem festgelegten Intervall einen Ping-Befehl zu senden, wenn sich die CPU im Energiesparmodus befindet. Die Problemumgehung verwendet AlarmManager, um es aufzuwecken und die Arbeit zu erledigen. In der Android-Dokumentation heißt es:

Der Alarm Manager hält eine CPU-Aktivierungssperre, solange die onReceive () -Methode des Alarmempfängers ausgeführt wird. Dadurch wird sichergestellt, dass das Telefon erst dann in den Ruhezustand versetzt wird, wenn Sie die Übertragung abgeschlossen haben. Sobald onReceive () zurückkehrt, gibt der Alarm Manager diese Aktivierungssperre frei. Dies bedeutet, dass das Telefon in einigen Fällen in den Ruhezustand wechselt, sobald Ihre onReceive () -Methode abgeschlossen ist.

http://developer.android.com/reference/android/app/AlarmManager.html

Ich muss sicher sein, dass ich den Ping-Befehl innerhalb dieser onReceive () -Methode senden kann, während die CPU PARTIAL_WAKE_LOCK hat, also habe ich nach einer Möglichkeit gesucht, Ping manuell an den Server zu senden, aber es scheint, dass der Client keine solche Methode verfügbar macht. Vermisse ich etwas? Oder was ist die Problemumgehung hier außer dem Veröffentlichen meiner eigenen "Ping-Nachricht"? Ich möchte das aus folgenden Gründen vermeiden:

Größerer OverheadWir werden sicherstellen, dass Android-Clients nur Abonnenten sind, möglicherweise mit der ACL von Mosquitto. Sie dürfen keine Nachrichten veröffentlichen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage