2016-04-19 18 views
2

Für die Handhabung einer Bluetooth Socket-Kommunikation im Hintergrund, welches ist das richtige Werkzeug? Thread, Service, IntentService, AsyncTask oder eine andere?Bluetooth-Kommunikation im Hintergrund. Thread, Dienst, IntentService, AsyncTask ..?

Der Code befindet sich in einer anderen Klasse als die Hauptklasse und sollte beendet werden, und Sockets und Streams müssen beendet werden, wenn die Verbindung unterbrochen wird.

Nach diesem nützlichen Beitrag: http://www.onsandroid.com/2011/12/difference-between-android.html

Thema könnte am besten sein, aber wenn ja, wie ich es in einer anderen Klassendatei implementieren und es nach wie vor von der Main-Klasse aufrufe?

Antwort

3

Ich denke, es ist ganz auf Ihre Bedürfnisse hängt zum Beispiel

Wenn Sie die Bluetooth-Scan ermöglichen die ganze Zeit halten wollen, dann sollten Sie Service verwenden, die im Hintergrund bleiben würde Geräten zu suchen, die Socket-Kommunikation zu tun mit. Darüber hinaus können Sie einen anderen Intent-Dienst im Dienst verwenden, um verschiedene Aufgaben wie das Senden von Dateien, Kommunikation usw. zu erledigen. Intent-Service ist jedoch normalerweise für lange laufende Prozesse geeignet, meiner Meinung nach ist dies ein gutes Modell für Sie.

AsyncTask ist in der Regel für die Behandlung von Netzwerk-orientierten Aufgaben wie HTTP-Anfrage und alle.

Darüber hinaus können Sie denken, Handler anstelle von Thread zu verwenden, die auch Nachrichtenkommunikation bereitstellen.

+0

Die Anwendung scannt nur am Anfang nach Geräten. Sobald der Benutzer ein Gerät auswählt, wird die Kommunikation geöffnet und das Scannen gestoppt. Ich würde nur Text (Zeichen) senden. Ich verwende derzeit IntentService, mit einer while-Schleife im OnHandleIntent, die auf neue Daten vom angeschlossenen Gerät wartet. Unabhängig davon, ob ich Flags verwende oder nach .isConnected suche, kann ich die while-Schleife nicht unterbrechen. – Fideon

Verwandte Themen