Über einen anderen Thread, die UI vom Hauptthread aktualisieren

  • Hallo,

    ich habe eine Activity, die mein Hauptthread ist. Desweiteren habe ich noch einen weiteren Thread, der Daten per Bluetooth empfängt. Mithilfe der Daten die ich empfange, will ich eine Imageview auf dem Hauptthread verändern. Jedoch bekomme ich immer die Fehlermeldung: "Only the original thread that created a view hierarchy can touch its views". Ich habe bereits herausgefunden, dass es die möglichkeit gibt, über "runOnUiThread" auf das Imageview zuzugreifen. Jedoch klappt es nicht. Wo muss das runOnUiThread genau hin und wie viel vom Code muss da rein. Würde es einfach reichen, denn Teil vom empfangen der Daten reinzupacken oder muss die Zeile die versucht auf das Imageview zuzugreifen da rein.

    P.S.: Der Fehler tritt in Zeile 105 auf.

    Edited 2 times, last by omax1 (January 22, 2018 at 10:11 PM).

  • Aber über die Run Methode rufe ich ja die andere Methode in der selben Klasse "empfangenenStringBearbeiten" auf. Läuft die dann nicht mehr in dem Thread? und sobald die Methode abgearbeitet ist müsste er doch zurück in die Run Methode gehen.

  • ja das stimmt schon wenn du die Methode aus der Run aufrufst wird die Methode in dem Thread ausgeführt. Aber wie mir scheint willst du aus dem Thread auf den ui zuzugreifen. Was ist "Spielfeld." ?
    Dies wird über handler Methoden gemacht. Ich denke das für dein Vorhaben
    Asynctask bessere ist.

    Edited once, last by nono124 (January 4, 2018 at 5:38 PM).

  • Hi, wen ich es richtig verstehe willst du eine dauerhafte Verbindung zum Bluetooth Gerät aufbauen. Dafür ist ein Thread nicht sonderlich geeignet. Ein Thread wird gestartet und wenn er durch gelaufen ist beendet er sich.Danach muss er wieder neu erstellt (new …) und gestartet werden. Denke dafür würde sich ein Service besser eignen.
    http://www.programmierenlernenhq.de/tutorial-andro…-und-asynctask/
    http://www.bs7-augsburg.de/aicher/files_c…4_Threading.pdf

    Edited once, last by nono124 (December 27, 2017 at 9:50 AM).

  • Der Thread wird ja aber nie beendet, weil das empfangen neuer Daten in einer while(true) ist. Ist es dann trotzdem eine schlechte idee das so zu machen?

    Ich lese mir mal die Links durch.

    P.S. Die Daten die empfangen werden, kommen von einem 2. Android Gerät auf dem die selbe App läuft.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!