Ich habe ein unlösbares Problem, ich habe das Wochenende damit verbracht, es konnte nicht behoben werden. Wenn ich eine einfache Test App mit zwei Aktivitäten mache: 1. Mainactivity: ein paar Buttons, ein Timer (Hintergrund-Thread) und eine Light-Anfrage an eine SQLite-Datenbank. 2. Zweite Aktivität: einige Tasten, nur eine hat einen Klick-Listener, wenn Sie darauf klicken, kehren Sie einfach zur ersten Aktivität zurück. Ich benutze große Tasten (Bildschirmbreite etwa ein Viertel der Bildschirmhöhe), die Xml-Layout-Ressourcen enthalten keine verschachtelten Gewicht-Elemente oder andere exotische Dinge.
Es ist ein Testprojekt, es hat keine andere Funktionalität.
Ich habe folgendes ernstes Problem: Wenn ich die API-Ebene in der Manifest-Datei auf 3 setze, funktioniert alles perfekt. (Bildschirm automatisch im Kompatibilitätsmodus) - Wenn ich die API-Stufe 11 oder höher einstelle, kann es bis zu 10 Sekunden dauern, bis die zweite Aktivität geladen wird. Nach dem ersten Öffnen der zweiten Aktivität scheinen die Dinge zwischengespeichert zu sein, die Verzögerung existiert nicht mehr. -Wenn ich den API-Level auf 11 oder höher eingestellt habe, und ich erzwinge (Bildschirm res) Kompatibilitätsmodus: keine Änderung, die Verzögerung bleibt.
Ich habe dieses Testprojekt erstellt, weil ich beim Upgrade einer älteren App auf dieses Problem gestoßen bin. Es lief problemlos auf älteren API-Ebenen, wenn ich es auf Android Version 3 oder höher setze, kommt es zu Verzögerungen von bis zu 25 Sekunden! (auch zum Öffnen einer Aktivität, die nur statischen Text anzeigt ...).
Ich teste auf einem neuen Galaxy Tab, das kann nicht das Problem sein. Ich habe stundenlang nach einer Lösung gegoogelt, nie etwas in der Nähe gefunden. Ich habe sogar Eclipse und alle Android-Ressourcen komplett deinstalliert und alles neu installiert und aktualisiert (einschließlich eines Werksresets meines Galaxy Tab). Kein Glück.
Ich habe eine Ablaufverfolgung durchgeführt, das Problem liegt in GLES20Canvas.nDrawDisplayList. Es scheint, dass der Aufbau dieser Liste viel Zeit in Anspruch nimmt, selbst wenn nicht viel zu bauen ist ...
Hat jemand eine Ahnung, wie ich das lösen kann?
Danke, Martin
Ich habe eine Lösung für dieses Problem gefunden, indem ich diesen Post untersuche: Ссылка
Die Lösung besteht darin, die Hardwarebeschleunigung zu deaktivieren.
Fügen Sie in der AndroidManifest.xml
in Ihrem Anwendungs-Tag Folgendes hinzu:
Jetzt läuft alles wieder glatt. Leider beschleunigt die Hardwarebeschleunigung Ihre App nicht, wenn sie gestartet wird.
GLES20Canvas.nDrawDisplayList
Wenn dies der Fall ist, ist expected to have a large portion of the time if you are drawing a lot, especially very big views
.
Ich möchte, dass Sie einen Link für die Do's und Dont's von android- geben. 30-Hardwarebeschleunigung
Tags und Links android performance