Ich versuche, eine Android-App zu erstellen, die über einen Socket mit einem lokalen Server kommuniziert. Die Kommunikation übergibt einfache Befehle und Daten in Strings mit JSON. Der Client sollte ständig eingehende Nachrichten vom Server abhören und die Benutzerschnittstelle aktualisieren, wenn neue Daten empfangen werden.
Ich habe also einen Netzwerkdienst erstellt, bei dem es sich um einen gebundenen Dienst handelt, der im Hintergrund ausgeführt wird. Von meiner Aktivität binde ich an den Dienst und erhalte eine Instanz des Dienstobjekts. Das Serviceobjekt enthält Instanzmethoden, mit denen ich Befehle an den Server senden kann.
Mein Problem ist, wie kann ich meinem Dienst ermöglichen, ständig auf Nachrichten vom Server zu warten, ohne die Möglichkeit zu blockieren, Nachrichten an den Server zu senden?
%Vor%Sie können in Ihrem Dienst einen Thread zum Abhören des Servers erstellen. Der zweite Thread dient zum Senden von Befehlen. Dann sollten Sie für Ihren Service einen Haupt-Thread mit einem Handler erstellen. Dieser Handler verarbeitet Nachrichten von diesen beiden Threads.