Ich implementiere eine Chat-App mit Asmack-Bibliothek. Ich möchte einen immer laufenden Dienst starten, bei dem alle Verbindungsmanagementaufgaben ausgeführt werden sollen und die eingehenden Pakete erhalten und die Nachrichten in meiner SQLite-Datenbank speichern sollen. Und wenn meine App gestartet wird, möchte ich, dass meine App auch für die eingehenden Nachrichten benachrichtigt wird, während der Hintergrunddienst die Nachrichten in die SQLite-Datenbank einfügt. Wie implementiert man solche Struktur mit Sticky Service. Ist auch eine partielle Wecksperre erforderlich. Da werden Bilder teilweise auch auf Wunsch mit http teilweise heruntergeladen.Android Hintergrund Service für Smack (XMPP) Chat-Anwendung
Antwort
Sie können den Dienst nach der Registrierung auf dem Server starten.
onStartCommand des Dienstes den Benutzer anmelden.
Implement Service mit PacketListener, ConnectionListener, InvitationListener
PacketListener für den Empfang von Groupcaht oder Eins zu Eins Chat-Nachrichten.
ConnectionListener, um zu prüfen, ob die Verbindung zum Server hergestellt oder getrennt wurde.
InvitationListener Um Gruppeneinladungen zu erhalten.
Nach erfolgreicher Anmeldung fügen Sie diese Listener hinzu.
Jetzt, wenn die Nachricht empfangen wird, speichern Sie diese Nachricht in der lokalen Datenbank und senden Sie eine Broadcast für die Aktivitäten, die die Nachricht erhalten möchten.
Überprüfen Sie, ob die App im Hintergrund, wenn ja dann die Benachrichtigung für die neue Nachricht senden
mir eine Mail, wenn eine [email protected] jede Frage stellen
Vielen Dank. Ich möchte auch, dass die App weiterhin Nachrichten empfängt, während sie sich im Hintergrund befindet. Aber dafür muss der Benutzer online sein. Aber wenn der Benutzer das Chat-Fenster verlässt, wird der Benutzer in meiner App offline geschaltet. –
Dann muss die Verbindung unterbrochen werden Implementieren Sie ConnectionListener, um zu überprüfen, wo die Verbindung geschlossen wird. 1 bitte für die Antwort –
Eigentlich möchte ich einen "gestarteten Dienst (unbind)" starten, dessen Aufgabe es ist, alles vom Empfangen von Nachrichten bis zum Senden von Nachrichten zu verwalten. Ich will, dass mein Klient wie eine Schnittstelle ist, die die Befehle zum Service ausstellt und der Service das notwendige tut. –