S
Skolleus
Neues Mitglied
- 0
Hi,
ich bin recht neu in der Android-Programmierung (wie auch hier im Forum) und stehe vor einem kleinen Problem was Threads angeht.
Ich habe einen Thread, der eigentlich die ganze Zeit Daten (von Socket) lesen soll. Diese werden von ihm ausgewertet und je nach Inhalt wird etwas vom UI-Thread ausgegeben.
Soll heißen: Es kommen mehrere (sehr viele pro Sekunde) Nachrichten in einem bestimmten Format an, werden ausgewertet und bei Empfang einer oder mehrerer bestimmten Nachrichten (alle paar ms) wird deren enthaltener Wert im Display angezeigt. der Rest wird ignoriert.
Das Problem dabei: der Lese-Thread arbeitet und lässt nicht zu, dass das Display aktualisiert wird (klar, es kann immer nur ein Thread arbeiten).
Von Java aus kenne ich das Problem bei mehreren Threads und hätte es z.B mit Semaphoren lösen können. Dummerweise gibt es in Android 2 Einschränkungen.
1. Nur der UI-Thread kann auf das Display schreibend zugreifen.
2. Der UI -Thread darf nicht geblockt werden.
Ich kann ihn also nicht gezielt anhalten, den Lese-Thread ausführen, bei Bedarf diesen wieder anhalten und den UI-Thread etwas anzeigen zu lassen.
Mein 2. Versuch war AsyncTask.
Da wird allerdings das Display nur alle paar Sekunden aktualisiert. Es sollte aber innerhalb von ms passieren.
Hat jemand eine Idee was ich tun kann, um dem Lese-Thread die CPU Zeit zusichern zu können und trotzdem alle paar ms (möglichst zeitnah nach Erhalt der entsprechenden Nachricht) das Display aktualisiert zu kriegen?
ich bin recht neu in der Android-Programmierung (wie auch hier im Forum) und stehe vor einem kleinen Problem was Threads angeht.
Ich habe einen Thread, der eigentlich die ganze Zeit Daten (von Socket) lesen soll. Diese werden von ihm ausgewertet und je nach Inhalt wird etwas vom UI-Thread ausgegeben.
Soll heißen: Es kommen mehrere (sehr viele pro Sekunde) Nachrichten in einem bestimmten Format an, werden ausgewertet und bei Empfang einer oder mehrerer bestimmten Nachrichten (alle paar ms) wird deren enthaltener Wert im Display angezeigt. der Rest wird ignoriert.
Das Problem dabei: der Lese-Thread arbeitet und lässt nicht zu, dass das Display aktualisiert wird (klar, es kann immer nur ein Thread arbeiten).
Von Java aus kenne ich das Problem bei mehreren Threads und hätte es z.B mit Semaphoren lösen können. Dummerweise gibt es in Android 2 Einschränkungen.
1. Nur der UI-Thread kann auf das Display schreibend zugreifen.
2. Der UI -Thread darf nicht geblockt werden.
Ich kann ihn also nicht gezielt anhalten, den Lese-Thread ausführen, bei Bedarf diesen wieder anhalten und den UI-Thread etwas anzeigen zu lassen.
Mein 2. Versuch war AsyncTask.
Da wird allerdings das Display nur alle paar Sekunden aktualisiert. Es sollte aber innerhalb von ms passieren.
Hat jemand eine Idee was ich tun kann, um dem Lese-Thread die CPU Zeit zusichern zu können und trotzdem alle paar ms (möglichst zeitnah nach Erhalt der entsprechenden Nachricht) das Display aktualisiert zu kriegen?