Verbesserung der Scroll-Weichheit in einem Android-ListView

8

Ich habe ein Android ListView , das beim Scrollen kleine (etwa 1-5 Frames) stottert, etwa jede Sekunde. Ich stelle fest, dass viele Android-Telefone diese Probleme mit der Laufruhe der Animation haben, aber auf meinem Telefon (Motorola A855 mit Android 2.2), scrollt die native Kontaktliste ziemlich reibungslos. Die Objektansicht in der Kontaktliste ist komplexer als die Objektansicht in meiner Liste, nämlich:

%Vor%

Ich möchte nur so glatt wie die native Kontaktliste erreichen. Es scheint, dass dies möglich sein sollte, ohne im nativen Code zu optimieren, aber vielleicht irre ich mich damit.

Ich habe ein paar Dinge ausprobiert: Ich habe die Objektansicht noch weiter vereinfacht und ich habe versucht, sie programmatisch anstelle von XML zu instanziieren. Ich habe auch versucht, die Art zu reagieren, wie ich auf Elementklickereignisse reagiere, gemäß diesem Link:

Ссылка

Keines dieser Dinge scheint sich auf die Leistung auszuwirken.

Kann ich in meiner App etwas tun, um die Leistung zu verbessern? Ich möchte diese App auf mehreren Telefonen bereitstellen. Das Ändern der Einstellungen auf dem Telefon oder das Rooten des Geräts ist in meinem Fall keine Option. Hier ist die getView-Methode aus meiner Adapterklasse:

%Vor%

Vielen Dank im Voraus!

    
charleslparker 09.06.2011, 13:45
quelle

2 Antworten

6

Es ist schwierig zu wissen, warum dies passieren kann, ohne Ihren Code zu sehen.

Es gibt jedoch einen Ort, an dem Sie nach der Methode getView () in Ihrem ListAdapter suchen können (vorausgesetzt, Sie verwenden einen benutzerdefinierten Adapter). Versuchen Sie, die View, die als Argument für diese Methode übergeben wurde, erneut zu verwenden und nicht jedes Mal eine neue Methode zu erstellen. Tun Sie auch nichts zu schwer in dieser Methode (z. B. einen Netzwerk-Anruf), in der Tat versuchen Sie es so schlank und gemein wie möglich für die beste Leistung.

    
Mark Allison 09.06.2011, 13:56
quelle
3

Haben Sie Efficient Adapter ausprobiert? Ссылка

Aus meiner Sicht ist das Problem der Glättung der Animation auf den im Hintergrund laufenden Garbage Collector zurückzuführen. Wenn Sie eine Menge Objekte erstellen, sehen Sie Verzögerung in der Listenansicht scrollen.

Hoffe diese Hilfe.

    
Gopal 09.06.2011 13:58
quelle