2012-08-28 4 views
20

Sto eseguendo la stessa app Web esatta su Android sotto PhoneGap e sotto il browser integrato. L'app funziona correttamente sul browser integrato ma è incredibilmente lenta sotto PhoneGap. Anche lo scrolling di base sulla pagina oscilla sotto PhoneGap.Perché PhoneGap è più lento del browser?

C'è qualcosa, in generale, che potrei sbagliare? Ho avuto l'impressione che PhoneGap utilizzi lo stesso renderer WebKit come la normale app del browser, quindi perché lo stesso HTML e JavaScript potrebbero essere più lenti all'interno di PhoneGap?

P.S. Questo è stato asked before, ma a causa della formulazione penso che la domanda originale sia stata fraintesa.

+0

Lo stesso problema di fronte! Qualche soluzione per costruire PhoneGap? – byJeevan

risposta

16

io possa avere inavvertitamente inciampato su una risposta a questo. Risulta che le app su cui stavo lavorando avevano android:targetSdkVersion in AndoroidManifest.xml impostate su un valore veramente basso (ad esempio la mia versione Android di destinazione era qualcosa come 2.2). Aumentando questo valore a 14 (Android 4.0), le prestazioni di PhoneGap sono notevolmente migliorate, almeno sui nuovi dispositivi Android con ICS o Jelly Bean.

L'impostazione di un valore basso targetSdkVersion sembra disattivare almeno alcuni dei miglioramenti delle prestazioni introdotti nelle versioni più recenti di Android.

Quindi, se vuoi vedere un grande incremento delle prestazioni in PhoneGap, assicurati che il tuo targetSdkVersion corrisponda alla versione massima di SDK supportata dal telefono su cui stai eseguendo il test.

7

Non so PhoneGap, ma si può provare questi:

  • Aggiunta android:hardwareAccelerated="true" nel manifesto
  • Se si utilizza WebView webview.getSettings().setRenderPriority(RenderPriority.HIGH); e webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
+0

C'è qualche tag per aggiungere questo/questi – Lekhnath

+1
2

È contro-intuitivo, ma in realtà potrebbe essere necessario disattivare l'accelerazione hardware per la tua webview. L'accelerazione hardware a partire da Android 4.0.4 non fa nulla per canvas e altri eventi di ridisegno, ma in realtà rimuove le risorse della CPU per quegli eventi.

Prova ad aggiungere questa riga di codice nella vostra applicazione java:

super.setLayerType (View.LAYER_TYPE_SOFTWARE, null);

Imposta anche android: hardwareAccelerated = "false" nel manifest.

+0

Questo ha risolto alcuni dei miei problemi di rendering e ha velocizzato la mia app. Strano. – TWilly

+0

puoi fornire maggiori dettagli per favore –

0

La stessa cosa esatta che ho provato! Precedentemente stavo usando Android 3.x per i test. Non appena ho aggiornato a 4.4.2 la mia tela è stata lenta! Osservando la timeline del rendering ho potuto vedere molte chiamate di rasterizzazione che richiedono più di 100 ms e riducono il mio FPS a circa 8! android: hardwareAccelerated = "false" ha risolto i miei problemi. C'è un modo per impostare hardwareAccelerated = "true" a seconda della versione di Android?