2012-07-12 2 views
6

Stiamo sviluppando un'applicazione Sencha Touch 2 che fa uso di PhoneGap per poterlo installare come applicazione e accedere all'archiviazione di un dispositivo. Funziona molto bene su iPad 2 e iPad 3. Tuttavia, quando abbiamo provato a eseguire l'applicazione su un dispositivo Android, le prestazioni erano molto lente. Gli elementi principali che hanno rallentato il sistema sono stati elenchi e caroselli. Quando abbiamo provato a testare la stessa applicazione tramite il browser Chrome, le prestazioni erano in linea con quelle dell'iPad.Sencha Touch 2 - Prestazioni Android

Avete qualche suggerimento su cosa possiamo fare per migliorare le prestazioni su Android, magari anche abbandonando PhoneGap per qualcosa che funzioni meglio. O se possiamo forzare l'invio di fonegap come browser Chrome.

Grazie per il vostro tempo & aiuto.

+0

Vedere. Sto anche usando il PhoneGap e il sencha. Ma fino ad ora non ho avuto molti problemi in termini di prestazioni. Potrebbe essere un po 'lento per alcune funzionalità native come la scansione di codici a barre e tutto. Ma non molto. Suggerirò di usare l'ultimo file corodova.jar. Può essere 1.8 o 1.9 –

+0

In realtà stiamo utilizzando la versione 1.9 di Cordova, ma le prestazioni non sono buone. Devo dire che non lo stiamo sviluppando come applicazione MVC perché questo è stato il nostro primo progetto che utilizzava Sencha, quindi deve influire anche sulle prestazioni. Molte persone menzionano che la radice del problema è la visualizzazione Web di Android su cui funziona Phonegap, a quanto pare non è buono per i siti heave. – user1520547

+0

Ma sto usando MVC architechture. Quindi, parte UI, sto facendo utilizzando Sencha Touch 2 e la parte nativa usando PhoneGap. Ma fino ad ora le prestazioni sono buone. –

risposta

12

Il problema che si verifica qui è che il browser Android non utilizza l'accelerazione dell'hardware grafico. Ciò significa che i trucchi standard che Sencha (e altre librerie HTML5 come jQueryMobile, iScroll etc ...) usano per fornire buone prestazioni di scorrimento, come le trasformazioni CSS 3D, per fare in modo che il tuo elenco sia reso in un livello separato, che può quindi essere tradotto in hardware, non funzionerà su Android. Invece, la lista di scorrimento sarà eseguita interamente nel software, che sarà lento!

Il browser Chrome, tuttavia, fornisce l'accelerazione GPU. Il dispositivo Android è più che capace di offrire una buona esperienza HTML5, è semplicemente che il browser standard non sfrutta ancora l'hardware della GPU.

A meno che non si possa costringere gli utenti finali a utilizzare Chrome (cosa di cui dubito), l'unica opzione è quella di degradare l'esperienza utente e fornire un'interfaccia utente leggermente più semplice per gli utenti Android.

Per ulteriori dettagli, vedere "IMPROVING THE PERFORMANCE OF YOUR HTML5 APP"

+0

Questo spiega esattamente qual è il problema, grazie. No, come hai intuito, non siamo in grado di forzare gli utenti a utilizzare Chrome perché è necessario archiviare più di 5 MB di dati per l'applicazione, quindi la registrazione locale non sarebbe sufficiente. Daremo un'occhiata al link che hai fornito, forse potremo sacrificare un po 'di appeal visivo per migliorare le prestazioni – user1520547

0

provare ad impostare questo flag nella tua AndroidManifest.xml: Android: hardwareAccelerated = "true"

+0

Già provato, ma non sembra funzionare, le prestazioni erano esattamente le stesse di quando l'opzione era impostata su false. Ho anche provato a impostare il target sdk su 15 (4.0.3) ma ancora inutilmente – user1520547

0

Aggiornamento: Avendo lavorato con ST2 più lunga ora le prestazioni le sfide su Android sono solo qualcosa che devi accettare. Ci sono molte cose che puoi fare per evitare problemi di prestazioni come ridurre gli ascoltatori e gli eventi, mantenere il DOM leggero (sotto i 2000 nodi) e in generale evitare trasformazioni ed effetti CSS3 (questi in particolare non funzionano bene su Android)

Un'altra cosa da considerare è piuttosto che usare la WebView integrata, è possibile utilizzare il browser CrossWalk e incorporarlo in APK.

https://crosswalk-project.org

Si aggiunge un po 'formato al vostro APK (15-20MB), ma si comporta meglio del costruito in WebView e porta stabilità e coerenza ad una piattaforma molto frammentato. Considera la realtà che ogni WebView su Android a seconda del dispositivo, del fornitore e della versione del sistema operativo può essere diversa in modi piccoli. CrossWalk ti permetterà di avere la stessa identica versione su tutti i dispositivi Android 4.0 e rimuovere qualsiasi problema specifico del dispositivo o del produttore.

Non esiste un proiettile d'argento per le prestazioni su Android. L'accelerazione grafica non migliorerà l'esecuzione della pura esecuzione di javascript o della manipolazione del DOM.Se si vuole capire perché, allora cominciare da qui:

What's the difference between reflow and repaint?

risposta Più (può essere ancora valido):

Per ICS e soprattutto la seguente impostazione sul WebView migliorerà in modo significativo le prestazioni di rendering per Sencha touch Android:

mWebView.setLayerType(WebView.LAYER_TYPE_HARDWARE, null); 

Tuttavia nella mia esperienza questo introdurrà manufatti in di rendering CSS a seconda delle condizioni va dispositivo e piattaforma riation. Non ho trovato una ragione specifica per questo e non mi aspetto che Google lo risolva poiché il componente webview verrà sostituito con una versione nuova e migliore di Android 4.4.

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