5

Ich habe eine anspruchsvolle Hybrid-App mit Cordova gebaut und habe festgestellt, dass es im Allgemeinen langsamer ist als wenn ich die Website in mobilen Chrome laufen lasse. Einige Argumente, die ich gehört habe, das nicht für mich Sinn machen:Warum ist Cordova langsam sogar für CSS-Transformationen?

  1. CSS-Animationen in Mobile sind langsam (wenn dies der Fall wäre, würde die Website läuft langsam in mobilen Chrom zu, was nicht wahr ist)

  2. cordova oben auf Chrom kann

Hat cordova standardmäßig beschränkt die Menge an gpu Chrom verwendet gebaut wird (CSS-Transformationen einfach gut haben sollten, sie mit cordova nichts zu tun, Chrom sollte in der Lage sein, zu machen) ? Gibt es einige Einstellungen, die ich optimieren kann, um die CSS-Übergangsleistung zu verbessern?

+0

Die Webansicht ist langsamer als der Browser, aber normalerweise nur das Javascript. Cordova ist nicht auf Chrom gebaut, ist auf der System-Webansicht gebaut, nur die Android 4.4 und höher basieren auf Chrom. – jcesarmobile

+0

@jcesarmobile Ich habe auf Kitkat getestet, also muss Cordova selbst Chrom verwenden. – navgeet

+0

Nun, es ist nicht wirklich Chrom, es ist ein Chrom-basierten Webview. Und stellen Sie sicher, dass Sie das Basis-SDK 19 oder höher auf der androidManifest.xml gesetzt haben – jcesarmobile

Antwort

3

Chrome verwenden Sie die GPU nur, wenn Sie ihn verwenden möchten.

Ein Beispiel:

.nav-show { 
    transform:translate(200px,200px); 
    transition: transform 500ms linear; 
} 

nicht mit der GPU übertragen werden. Stattdessen die GPU zur Arbeit zu zwingen, könnten Sie verwenden:

.nav-show { 
    transform: translate3d(200px,200px,0); 
    transition: transform 500ms linear; 
} 

für weitere Informationen finde ich ein cool article about it.

Ich weiß nicht, ob Sie noch etwas anderes tun können.

Ich denke, WebView sind nur ein Teil von Chrom nach Kit-Kat. Darüber hinaus läuft Ihre App nicht in derselben Umgebung, wenn Sie sie in Chrome debuggen als "kompiliert" als Cordova-Anwendung. In der Tat, cordova fügen Sie einen Wrapper um Ihre Webansicht, Plugins Funktionen hinzufügen, die Chrom nicht tun müssen, etc ...

Hope that help.

+0

was ist, wenn ich einen Übergang für die Höhe machen möchte? –

+1

Leider können Sie die Breite oder Höhe nicht mit gpu umwandeln. – sarlam

+0

@BarbuBarbu können Sie versuchen, 'transform: scale' Stile zu verwenden. –