Zwei Prozesse gleichzeitig - UI Thread laggt

  • Hallo liebes Forum,


    heute wende ich mich wieder mit einem Thema was mich erneut sehr beschäftigt und ich das halbe Internet durchforstet habe um eine Lösung zu finden – leider ohne Erfolg. ||
    Ich habe eine ProgressBar und eine ImageView in meinem Activity-Layout. Die ImageView hat als Source eine <animation-list>. Ich habe einen Thread und Handler erstellt und lasse im Handler die Aktualisierungen des UI-Threads (Animation vom ImageView und ProgressBar-Fortschritt) ausgeben.
    Wenn ich beides hintereinander ausgebe, läuft alles flüssig. Lasse ich allerdings beides gleichzeitig ausführen, so fängt es an zu laggen. Was ich aber leider nicht verstehe…


    Ich kann gerne den Quellcode bei Bedarf einfügen.


    Liebe Grüße und vielen Dank im Voraus! :)
    Steven

  • versuche die beiden thread so zu synchronisieren das immer einer nach dem anderen im wechsel über seinen handler auf den ui thread zugreift.

    Uh. Ich bin noch ziemlicher Anfänger. Ich wüsste jetzt nicht, wie ich dieses umsetzen würde. Ist die Methode "synchronized" nicht für sowas gedacht oder bin ich da komplett aufm falschen Dampfer? Ich glaube mit Quellcode ist es vielleicht einfacher zu interpretieren.


  • Hi bin mir da auch nicht so ganz sicher. Ob das mit dem synchronized (this) richtig ist ? Hast du es mal ohne probiert?
    eigentlich sind es zwei unabhänige Threads. Denn daduch wartetet der eine Thread auf den anderen. Werde es mir noch mal in rughe anschauen.

  • So wie das da steht dürfte nix passieren. Allerdings auch nicht das, was du willst. Denn in jedem Thread erstellst du ein neues Handler Objekt.
    Somit greifen die Threads auch nicht auf das gleiche Objekt zu.
    Du müsstest das Handler Objekt außerhalb der Threads erstellen und jedem von diesem eine Referenz darauf zuweisen.

    Kann Spuren von persönlicher Meinung, Sarkasmus und Lakritz enthalten. Einzelne Wörter nicht für den Verzehr geeignet. Ungelesen mindestens haltbar bis: suche bei Google

  • Hallo habe mir die Sache nochmal angeschaut. Bei der ProgressBar machst Du die Zeit intensiven Sachen gar nicht im Thread.
    aus dem Thread schickst du nur eine Nachricht an den Handler. Die ProgressBar läuft somit im Ui Thread. Ich habe das mit zwei ProgressBars so gelöst.


    Deine animationDrawable.start(); Führst du auch im Handler aus und somit auch im UI und nicht im Thread aus.


    Um es anzupassen währe der Code deiner animationDrawable.start(); funktion gut.
    Hoffe das Hilft weiter.
    ps. Deine progressbar läuft nicht komplett im ui thread denn dein CountDownTimer ist eigentlich schon ein eigener thread das macht Android für dich.

  • Vielen Dank für den Quellcode! Momentan ist es bei mir zeitlich sehr eng. Ich melde mich, wenn ich das mal so probiert habe. Klingt aber plausibel, so wie es jetzt ist! :) Dankeschön!

Jetzt mitmachen!

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