Slow down bei ListItem clicks

  • Hey Leute,


    In meienr App habe ich bemerkt das beim Klicken (long click und normalen click) eine Verzögerung entsteht.
    Die Animation des Klickens ist auch nicht so gleitend wie es sein sollte. Zudem weis ich auch nicht ob der slow down während des Klicks oder schon vorher besteht.
    Ich weis nicht wie ich solche Slow downs ausfindig mache mit Android Studio.
    Mit dem Profiler hab ich mich nun gerade erst angefreundet, sehe aber noch nicht bei allem durch.


    Hier mal ein screen vom Profiler.

  • Hallo was ist das für ein Handy ein altes langsames.
    Wie viele threads werden den zu gleichen Zeit ausgeführt?
    Ist etwas der Main Thread stark belastet versucht der etwa etwas anderes zu machen.
    Hast du etwa ein sehr komplex layout. Mit großer verschachtelung.
    Beim linearerlayout sollte die verschachtelung nicht tiefer als 5 sein sonst sinkt die Performance.


    Wo tritt das auf laut dem Titel in eine Liste oder?
    Wie gross wie viele Einträge hat die Liste?
    Sind große Bilder Grafiken enthalten?


    Was hast du genommen eine listview oder das neuere resyclerview was leistungs stärker ist vor allen bei langen komplexen listen.

  • Ich habe es mit verschiedenen Geräten getestet. (Pyro_7_PLUS_3G, Lenovo TB3-710F und noch eins für verschiedene Android Versionen)
    Wo kann man die laufenden Threads denn sehen?
    Im Programm selber habe ich vielleicht 3-4 Threads wissentlich laufen, aber auch nur temporär für bestimmte Aufgaben.
    Das Layout ist relativ simple und nutzt ein einfaches Listview mit einfachen Daten. Es ist nur ein kleines Statussymbol in jedem Eintrag.
    Zudem sind es auch nur 5 Listen Einträge.


    Es gibt eine MainActivity die 3 verschiedene Fragmente aufrufen kann.
    Sichtlich tritt es auf wenn ich eine Listitem ancklicke. Und da wird auch im Profiler was angezeigt.(siehe bild im ersten Beitrag)


    Edit: 24 Threads laufen zu dem Zeitpunkt laut Profiler.

  • Also das Gerät kann man ja wahrscheinlich ausschließen, wenn es auf mehreren so ist.
    Das Layout und die Daten sind ja anscheinend auch nicht komplex.
    Hört sich also so an, als würde was anderes Performance ziehen.


    Eventuell hängt es mit den Threads zusammen, aber das ist natürlich jetzt alles schwer zu sagen ohne Source-Code.

  • wie verhält es sich wenn du eine signed apk erstellst dise ohne debugging auf dem Handy installierst und dabei auch keine debugg Verbindung zum pc hast.
    Ist es da auch so?



    Edit: 24 Threads laufen zu dem Zeitpunkt laut Profiler.
    Ist schon eine ganze Menge.
    Wieso so viele. Beendest du sie Nicht .und erstellst ständig neue.
    So wie es aussieht brachen wir wirklich den Code in eine Aussage machen zu können,

  • Also mir ist aufgefallen das es nur bei dem Pyro_7_PLUS_3G und einem Huawei P8 lite 2017, beide Android V.8, auftritt.
    Es laufen auf diesem auch immer 4-5 Threads mehr.
    Was ist den eine normale anzahl an threads?
    Ich schau mal ob ich später code ausschnitte hochladen kann.


    Edit: ich habe auch ein ViewHolder für die ListAdapter Klasse ausprobiert. Dies änderte auch nichts.

  • Die Anzahl der Threads die gleichzeitig laufen ist erstmal irrelevant.
    Du kannst auch 100 Threads haben, wenn diese nichts machen oder nur leichte Aufgaben machen, mindern die nicht unbedingt deine Leistung.
    Aber du kannst auch 2 Threads haben, und du kannst damit die ganze Performance runterziehen, wenn diese halt komplexere Aufgaben machen.
    Interessant ist halt, was in den Thread genau vorgeht.

  • Lösung:
    Also es lag wohl doch an einem Bild. Das Bild hatte eine Auflösung von 600 x 600 und 130 kb.
    Ich habe die Auflösung runtergeschraubt auf 50 x 50 und da ging es wieder.
    Ist das normal das bei einer solchen Bildgröße solche Probleme auftreten in einer Liste,
    selbst wenn nur ein Eintrag vorhanden ist?

  • Wie hast du das Bild eingebunden? #
    Wenn es über den Main-Thread geht, wird er eventuell geblockt/stark belastet, was dazu führt, das sich die Anwendung ruckelig anfühlt (z.B. durch langsame/ruckelnde Animationen).
    Bitmaps können schon sehr viel Resourcen schlucken (Ram und CPU).
    Es gibt eine Library die viel Arbeit dabei abnimmt: https://github.com/nostra13/Android-Universal-Image-Loader
    Bestimmt einen Blick wert.

Jetzt mitmachen!

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