2010-12-11 16 views
0

Ich habe eine Android-App, die jetzt ziemlich groß und komplex wird, und es scheint intermittierende Leistungsprobleme zu haben. Einmal werde ich die App ausführen und es ist in Ordnung, ein anderes Mal wird es Schwierigkeiten beim Wechseln der Ansichten.Ursachen für Leistungsprobleme erkennen?

Wie kann ich die Ursachen des Leistungsproblems mit Debugging-Tools erkennen, damit ich es korrigieren kann?

Antwort

7

Verwenden Sie das Tool ddms, das mit dem SDK geliefert wird. Es hat eine nette Funktion namens Allocation Tracker, mit der Sie in Echtzeit sehen können, wie viel Speicher Ihr Code verbraucht und welche spezielle Zeile das verursacht.

In den meisten Fällen wird Ihre App aufgrund schlechter Adapterimplementierungen, schlechter Layout-Inflationstechniken oder der Verwendung eines Cache-Systems zum Dekodieren von Bitmaps (z. B. mit SoftReference) langsamer.

Werfen Sie einen Blick auf diesen Artikel für eine kurze Erklärung: Tracking Memory Allocations

a

+2

Um Cristian's Antwort zu vervollständigen. Zuteilungen in Java/Android = Schluckauf wegen des Garbage-Collectors. Versuchen Sie also, neue Objekte zu erstellen, es sei denn, Sie müssen dies wirklich tun. –

+2

Es gibt auch den neuen 'StrictMode', der nützlich sein sollte, um sicherzustellen, dass Sie nichts zu intensiv mit dem Hauptthread machen. http://developer.android.com/reference/android/os/StrictMode.html – smith324

0

Neben dem Werkzeug Cristian erwähnt, Traceview ein weiteres hilfreiches ist. Es ist nicht sehr gut dokumentiert, aber es kann Ihnen Informationen darüber geben, wie oft Methoden aufgerufen werden und welche Methoden viel Zeit benötigen.

Ein weiteres gutes Gedächtnis-Tracking-Tool ist MAT, hier ist eine Seite, wie es mit Android verwenden beschreibt: http://ttlnews.blogspot.com/2010/01/attacking-memory-problems-on-android.html

Sowohl die Verfolgung und die Heapspeicherauszüge können durch die DDMS Panel durchgeführt werden, wenn Sie nicht zu bevorzugen arbeite mit der Kommandozeile. Klicken Sie in Eclipse im Gerätebereich unter dem Gerät/Emulator, den Sie verwenden, auf Ihre App (aufgelistet nach Paketname), und dann können Sie Method Profiling starten/stoppen, um eine Ablaufverfolgung zu erhalten, und Sie können Dump HPROF verwenden Haufen Dump. Beachten Sie, dass die Dumps konvertiert werden müssen, um mit dem MAT-Plugin zu arbeiten. Das oben beschriebene Angriffs-Speicher-Problem-auf-Android beschreibt, wie man das macht.