ein handler pro threads oder wie?

  • Hallo,


    bin neu in Sachen Threads unterwegs und komme grade nicht klarund brächte erstmal eine allgemeine Klärung. Ich hätte gerne einen Thread der der Daten über tcp abruft. Jetzt kann ja ein Thread nicht auf Sachen im Ui-Thread zugreifen und deshalb wollte ich Handler benutzen. Muss ich einen Handler benutzen der auf beide Threads(z.B. UI-Thread und TCP-Thread) zugreift oder bekommt jeder Thread einen Handler? Also UI-Thread benutzt den in Thread TCP erzeugten Handler und umgekehrt um Messages zu versenden. Oder geht das ganz anders?

  • Im Prinzip sollten die beiden Threads komplett unabhängig voneinander arbeiten und nach Möglichkeit gar nichts von einander wissen.


    Für TCP Aktivitäten bekommst Du das am Besten mit dem AsyncTask gelöst.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Danke für deine Antwort!
    Also tatsächlich ist es so, dass ich mehrer Buttons habe mit denen ich Ausgänge einer SPS schalte und Eingänge einlese. Ich habe ne App mit android 2.33 die prinzipell funktioniert aber natürlich ab 3.0 und höher nicht mehr. Da kamen dann Fehlermeldungen das zeit-intensive Aufgaben in Threads ausgelagert werden sollen. Der AsyncTask müsste eine TCP-Verbindung herstellen und halten(loopen) bis ich disconnecte oder die App beende. Würde das gehen? Ich habe beim AsynkTask nur beispiele gefunden die einmal durchlaufen aber nicht "loopen". Kann ich AsynkTask loopen und falls ja gibts Beispiele dafür?

  • Für permanente Verbindungen solltest Du die Sache lieber in einen Service auslagern, der im Hintergrund arbeitet.
    An den kann sich Dein UI dann binden und notwendige Callbacks bereit stellen, zu denen der Service dann kommuniziert.


    Für die Callbacks benötigt Dein Service dann nur einen UI Handler, an den er die ganzen Methodenaufrufe (in eine Runnable verpackt) schickt.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Ich hab mir die Service-Funktionen angeschaut, habe aber bisher nur Beispiele mit Intents gefunden. Wie man das jetzt mit Handler macht, blicke ich noch nicht. Stehe halt noch ganz am Anfang mit dieser Thematik. Gibt es Beispiele wie Handler Servises ansprechen und Daten (in meinem Falle eigentlich nur ein paar Bytes) in beide Richtungen austauschen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!