Eigenes Event bzw. Zurückspringen zum UI Thread

realpk

Mitglied
Das hat aber nicht direkt was mit Java, sondern mehr mit dem Android-Framework zu tun.

Naja, ich habe zwei Threads. Thread A erzeugt Thread B. Meine Frage ist, wie komme ich von Thread B wieder auf Thread A.

In C# kenne ich das Vorgehen über InvokeRequired und wenn benötigt dann ein Invoke.

Eine Lösung über einen Timer ist dafür nicht die richtige Wahl. Verschleudern von Ressourcen und Performance, nur weil man nicht erkennt, was der richtige Weg für diesen Fall ist.

gut ... das nun eine exception von einem framework fliegt das ich nicht kenne erklärt natürlich das ich keine kenntnis dieser exception habe ...

es scheint wie Sascha schon sagt etwas mit dem android-framework oder -plattform zu tun zu haben ...
ich persönlich muss mich leider jeglichem hilfeversuch enthalten da ich keine kenntnis über das verwendeten framework habe ...
dachte halt anfänglich das es ein gewöhnliches problem mit einer gefreezedten UI wäre ... lag da aber falsch

Ich habe mal geschaut, wie es allgemein bei Java läuft und etwas interessantes gefunden (http://stackoverflow.com/questions/292587/interacting-with-ui-threads-in-java-j2me).
Dort steht z. B. dass bei Swing nur auf die Komponenten über den "event dispatch thread" schreibend zugegriffen werden darf.

Allgemein würde ich es auch sehr unsauber finden, wenn jeder Thread irgendwie auf der UI rumhantiert.
 
Zuletzt bearbeitet von einem Moderator:
S

SE

dein post bezieht sich hier aber wie im link schon steht auf die J2ME ... ich kenne mich aber nur in der J2SE aus *ja .. ich schaffe es nicht mal J2EE mit tomcat zum laufen zu bekommen ^^*
wenn du jetzt also durch J2ME und Android vorgeschrieben bekommst das nur der EDT auf UI-componenten schreiben zugreifen darf ... dann sollte auch irgendwo in der doc dazu stehen wie man dann diesen EDT manipuliert damit er das macht was man will ...
man könnte sicher irgendwas über die SystemEventQueue und invokeLater(Runnable) basteln ... aber ob das in J2ME auch so geht weis ich wie gesagt nicht ...
ich wollte mich zwar mal mit J2ME beschäftigen .. aber mir war der konzeptionelle aufbau schon kompliziert genug davon gleich wieder die finger zu lassen ^^
 

genodeftest

Erfahrenes Mitglied
Dalvik (Android's Interpreter für Java-ähnlichen Bytecode) hängt nicht direkt mit J2ME zusammen, sondern ist ein Fork von Apache Harmony (eine J2SE Runtime). Wie das graphische Framework von Android aufgebaut ist, weiß ich leider nicht. Allerdings gilt für jede Anwendung (fast unabhängig von der Programmiersprache) die Regel, dass zeitaufwändige Arbeiten nicht in dem Thread ausgeführt werden sollen, der für die graphische Darstellung zuständig ist. Wichtig ist auch, dass man bedenkt, dass alle I/O-Operationen zeitaufwändig sein können (z.B. wenn Dateien von einer Netzwerkfestplatte geholt werden, wenn die Festplatte sich erst hochfahren muss, überlastet ist, ...).

Naja, ich habe zwei Threads. Thread A erzeugt Thread B. Meine Frage ist, wie komme ich von Thread B wieder auf Thread A.
Unter Swing/AWT würde man da ein AWTEvent nutzen, siehe https://secure.wikimedia.org/wikipedia/en/wiki/Event_dispatching_thread und http://download.oracle.com/javase/tutorial/uiswing/concurrency/index.html

Mit diesem Stichwort findet man auch Artikel zu Android:
http://developerlife.com/tutorials/?p=1263

vielleicht hilft dir auch dieser "SwingWorker" weiter: http://linuxmedianetwork.blogspot.com/
 

Neue Beiträge