Java GPS - Location Listerner oder Thread für Midlet?

unknowen

Cadet 4th Year
Registriert
Jan. 2006
Beiträge
114
Also mein Problem ist folgendes:

Ich möchte unter Java ME ein Midlet zu GPS Postitionsbestimmung programmieren (verwende dazu NetBeans 6).

Natürlich gibt es dazu das praktische Paket "Location", in der mir auch mit dem Location Listerner einer praktisches Interrupt zum zeitlichen aufruf zur Verfügung steht.

Jedoch muss ich eine eher langwierige Berechnung in dieser automatisch aufgerufenen Funktion in einen Thread auslagern und sehe nun das Problem, (es kommen noch viele Module zum fertigen Programm hinzu) dass der Thread erneut aufgerufen wird (1x pro Sekunde, max. GPS Aktualisierungsrate Rate), obwohl die Berechnung noch nicht fertig ist. Dies würde natürlich in einer Datenkatastrophe enden.

Deshalb meine Frage:
Wozu ist die LocationListerner Klasse gut, was nicht auch ein laufender Thread mit GPS-Einzelabfragen und Wartezeit erreichen kann?
Wäre es eine Option dies so auszuführen bzw. hat jemand Erfahrungen und kennt bekannte Probleme mit dieser Methode?

Ich bin sehr dankbar für jede Antwort.


mfg
unknowen
 
Zuletzt bearbeitet:
Und wieso machst du die Berechnung nicht separat? Du kannst ja die GPS-Koordinaten zusammen mit der Zeit in einer Klasse speichern und deine Berechnung in nem ganz eigenen Thread machen. Dieser separate Thread holt sich immer wenn er mit dem Rechnen fertig ist (man kann dort auch evtl. ein bisschen sleep() machen um die CPU-Last niedriger zu halten) die aktuell gültigen GPS-Koordinaten (mit Zeit der letzten Berechnung vergleichen damit man nicht 2x dasselbe macht) und rechnet dann halt weiter.

In der Doku stehts auch ja explizit als Warnung drin:
http://www-users.cs.umn.edu/~czhou/...x/microedition/location/LocationListener.html
The listener methods MUST return quickly and should not perform any extensive processing. The method calls are intended as triggers to the application. Application should do any necessary extensive processing in a separate thread and only use these methods to initiate the processing.
Das ist also dafür gedacht um bei einer Positionsänderung irgendwas im Programm anzustoßen aber KEINESFALLS für Berechnungen.
 
Zuletzt bearbeitet:
Zurück
Oben