Probleme mit while-Schleife im App-Inventor

  • 2 Antworten
  • Letztes Antwortdatum
E

Eyk107

Neues Mitglied
0
Hallo an alle,

ich habe eine kleine App im App-Inventor geschrieben, mit der ich anhand von verschiedenen Koordinaten die Entfernung und den Winkel berechne. In der While-Schleife sollen dauerhaft Winkel und Entfernung berechnet werden, bis die Entfernung unter 10m sinkt. Die Berechnung funktioniert soweit auch und die Werte sind auch korrekt. Packe ich die Berechnung in die While-Schleife hängt sich sowohl mein Handy als auch der Emulator auf. Ich gehe davon aus, das mein Programmierstil einfach "bescheiden" ist.
Hat vllt jemand eine Idee woran es liegen könnte und wie man es vllt eleganter lösen könnte?
Danke schon mal im voraus.

Mfg
Eyk
 

Anhänge

  • mit while.png
    mit while.png
    18,7 KB · Aufrufe: 372
  • ohne while.png
    ohne while.png
    15,5 KB · Aufrufe: 282
Ich kenne zwar den Inventor nicht, aber das sieht ganz nach dem "UI Thread Problem" aus.

Du musst dir das so vorstellen, dass deine App eigentlich in einer Endlossschleife (dem UI Thread) läuft, die bei jedem "Ereignis" eine von deinen Methoden aufruft (und gleichzeitig sich um das Malen der Grafik kümmert). Wenn du jetzt in deinem Ereignis eine lang laufende Schleife schreibst, kommt der UI Thread nicht mehr zum Zug, die App reagiert nicht mehr auf Events und hängt.

Du müsstest irgendwie auf das Event "Position hat sich verändert" reagieren (um zu sagen, wie man das macht, kenne ich den Inventor nicht gut genug für).

Vielleicht liege ich auch völlig falsch und der Inventor umgeht das UI Thread Problem ganz anders.
 
Ich kenne den App Inventor auch nicht. Aber wie mein Vorredner schon sagte wird es wohl so sein, dass mit der while Schleife das Handy oder der Emulator so schnell er kann die Berechnung durchführt. Das Problem ist dabei das somit der Benutzer nichts mehr machen kann, da die App mit der Berechnung beschäftigt ist.

Entweder ein Event einbauen oder die Berechnung in einem Thread packen und dann dann nach der Berechnung den Thread pausieren für ein paar Milli-Sekunden.
 
Zurück
Oben Unten