2012-07-12 17 views
6

Wir entwickeln eine Sencha Touch 2-Anwendung, die Phonegap verwendet, um es als Anwendung zu installieren und auf den Speicher eines Geräts zugreifen zu können. Dies funktioniert sehr gut auf dem iPad 2 und dem iPad 3. Wenn wir jedoch versuchten, die Anwendung auf einem Android-Gerät auszuführen, war die Leistung sehr langsam. Die Hauptelemente, die das System verlangsamten, waren Listen und Karussells. Als wir versuchten, die gleiche Anwendung über den Chrome-Browser zu testen, war die Leistung mit der des iPad vergleichbar.Sencha Touch 2 - Android Performance

Haben Sie irgendwelche Vorschläge, was wir tun können, um die Leistung auf Android zu verbessern, vielleicht sogar Phonegap für etwas, das besser funktioniert Graben. Oder wenn wir PhoneGap zwingen können, als Chrome-Browser zu laufen.

Vielen Dank für Ihre Zeit & Hilfe.

+0

Siehe. Ich benutze auch den Phonegap und Sencha. Aber bis jetzt hatte ich kein Problem in Bezug auf die Leistung. Vielleicht ist es etwas langsam für einige native Funktionen wie Barcode-Scannen und alle. Aber nicht viel. Ich werde vorschlagen, die neueste Datei corodova.jar zu verwenden. Mai 1.8 oder 1.9 –

+0

Wir verwenden tatsächlich die Cordova Version 1.9, aber die Leistung ist immer noch nicht gut. Ich muss erwähnen, dass wir es nicht als eine MVC-Anwendung entwickeln, weil dies unser erstes Projekt war, das Sencha verwendet, so dass sich dies auch auf die Leistung auswirken muss. Viele Leute erwähnen, dass die Wurzel des Problems die Webansicht von Android ist, auf der Phonegap arbeitet, anscheinend ist es nicht gut für Heave-Sites. – user1520547

+0

Aber ich benutze MVC architechture. So UI Teil, mache ich mit Sencha Touch 2 und nativen Teil mit Phonegap. Aber bis jetzt leistungsmäßig ist es gut. –

Antwort

12

Das Problem, das Sie hier haben, ist, dass der Android-Browser keine Grafikhardwarebeschleunigung verwendet. Dies bedeutet, dass die Standardtricks, die Sencha (und andere HTML5-Bibliotheken wie jQueryMobile, iScroll etc ...) verwenden, eine gute Scrollleistung bieten, wie zum Beispiel CSS 3D-Transformationen, um eine Liste in einer separaten Ebene darzustellen dann in Hardware übersetzt werden, wird nicht auf Android funktionieren. Stattdessen wird der Listen-Scroll vollständig in Software ausgeführt, was langsam wird!

Der Chrome-Browser bietet jedoch GPU-Beschleunigung. Das Android-Gerät ist mehr als in der Lage, eine gute HTML5-Erfahrung zu liefern, es ist einfach so, dass der Standard-Browser die GPU-Hardware noch nicht ausnutzt.

Wenn Sie Ihre Endbenutzer nicht zur Verwendung von Chrome zwingen können (was ich bezweifle), besteht die einzige Möglichkeit darin, die Benutzerfreundlichkeit zu beeinträchtigen und eine etwas einfachere Benutzeroberfläche für Android-Benutzer bereitzustellen.

Weitere Einzelheiten finden Sie "IMPROVING THE PERFORMANCE OF YOUR HTML5 APP"

+0

Das erklärt genau, was das Problem hier ist, danke. Nein, wie Sie vermuten, können wir Nutzer nicht zur Verwendung von Chrome zwingen, da wir mehr als 5 MB Daten für die Anwendung speichern müssen. Daher wäre der lokale Speicher nicht ausreichend. Ich werde einen Blick auf den Link werfen, den Sie zur Verfügung gestellt haben, vielleicht können wir ein bisschen visuellen Appeal opfern, um die Leistung zu verbessern – user1520547

0

Versuchen Sie, diese Fahne in AndroidManifest.xml Einstellung: android: hardwareAccelerated = "true"

+0

Bereits versucht, aber es scheint nicht zu funktionieren, die Leistung war genau das gleiche, wenn die Option auf falsch gesetzt wurde. Auch versucht, das Ziel sdk auf 15 (4.0.3) zu setzen, aber immer noch ohne Erfolg – user1520547

0

Update: jetzt mit ST2 mehr länger mit der Leistung gearbeitet habe Herausforderungen auf Android sind nur etwas, das Sie akzeptieren müssen. Es gibt viele Dinge, die Sie tun können, um Leistungsprobleme zu vermeiden, wie Listener und Events zu reduzieren, Ihr DOM-Licht zu halten (unter 2000 Knoten) und generell CSS3-Transformationen und -Effekte zu vermeiden (diese funktionieren insbesondere nicht gut unter Android)

Eine andere Sache zu betrachten ist, anstatt die eingebaute WebView zu verwenden, können Sie den CrossWalk-Browser verwenden und dies in APK einbetten.

https://crosswalk-project.org

Es fügt eine kleine Größe zu Ihrer APK (15-20MB), aber es funktioniert besser als die in WebView gebaut und bringt Stabilität und Konsistenz zu einer sehr fragmentierten Plattform. Berücksichtigen Sie die Tatsache, dass jedes WebView auf Android je nach Gerät, Hersteller und Betriebssystem in kleinerer Form unterschiedlich sein kann. CrossWalk ermöglicht es Ihnen, auf allen Geräten mit Android 4.0 oder höher die exakt gleiche Version zu verwenden und alle Geräte- oder Herstellerspezifischen Probleme zu entfernen.

Es gibt keine Silberkugel für die Leistung auf Android. Die Grafikbeschleunigung verbessert nicht die Ausführung von reiner JavaScript-Ausführung oder DOM-Manipulation.Wenn Sie verstehen wollen, warum dann hier beginnen:

What's the difference between reflow and repaint?

ältere Antwort (kann immer noch gültig sein):

Für ICS und über der folgende Einstellung auf dem webview deutlich Rendering-Leistung verbessern für Sencha touch auf Android:

mWebView.setLayerType(WebView.LAYER_TYPE_HARDWARE, null); 

aber meiner Erfahrung nach wird diese Artefakte in CSS-Rendering einführen, je nach Gerät und Plattform va riation. Ich habe keinen Grund dafür gefunden und ich erwarte nicht, dass Google es lösen wird, da die Webview-Komponente durch eine neuere und bessere Version in Android 4.4 ersetzt wird.

https://developers.google.com/chrome/mobile/docs/webview/overview