2012-04-28 10 views
7

Ho sviluppato un'applicazione per Android utilizzando jquery mobile e PhoneGap. Ho distribuito l'app sul mio dispositivo tramite USB. Le prestazioni dell'app sono davvero pessime, specialmente durante lo scorrimento di una lista più lunga.PhoneGap - Cattive prestazioni rispetto al browser su Android

La cosa strana è: l'intera app funziona senza problemi se apro il browser sul mio telefono e accedo direttamente a index.html. Stessa tecnologia, stesso contenuto. Non uso l'API nativa di phonegap o qualcosa di simile.

Testato con phonegap 1.5.0 e 1.7.0rc1, jquery mobile 1.1.0 su android 4.0.2.

Qualche idea?

+0

Supponendo che entrambi sono utilizzando il sistema libreria webkit, sembrerebbe che ci siano impostazioni di configurazione diverse o aggiunte aggiuntive in un ambiente o nell'altro, oppure qualcosa di strano nel tuo codice che sfida l'uno ma non l'altro. Potrebbe essere interessante puntare entrambi su un sito di benchmark javascript –

+0

. Sono solo curioso di sapere di quale grande lista stiamo parlando qui? – codaniel

+0

@codaniel: circa 50 elementi con le anteprime – rbk

risposta

0

Se si può confermare che il browser ha prestazioni migliori (che non è qualcosa di subottimale nel codice che frena l'uno ma non l'altro), si potrebbe considerare la distribuzione come un'applicazione offline html5 in modo che venga effettivamente eseguita nel browser.

0

Abbiamo riscontrato problemi di prestazioni durante lo scorrimento della stessa quantità di elementi di elenco con jquery mobile. La performance è stata così scarsa (non abbiamo nemmeno provato nell'ambiente PhoneGap) che abbiamo riscritto l'app utilizzando la libreria iScroll ... ora l'app scorre in modo scorrevole.

Se si è all'inizio dello sviluppo, è possibile provare a modificare la libreria dell'interfaccia utente.

Dopo questa situazione abbiamo distribuire le nostre applicazioni per testare i dispositivi abbastanza spesso per gestire i problemi di prestazioni nel tempo ... questo è diventato una "politica" :)

11

su Honeycomb (3.0), gelato (4,0) e posteriore dispositivi, è possibile migliorare le prestazioni con l'aggiunta di quanto segue nella < Application ...> tag:

android:hardwareAccelerated="true" 

È possibile impostare la minSdk a 8 (Android 2.2) per la compatibilità e la targetSdk a 15 (Android 4.0) e ciò farebbe funzionare l'accelerazione hardware quando è disponibile solo sul dispositivo.

Credo che con questo flag la prestazione delle mie applicazioni è uguale alla loro esecuzione nel browser, quindi credo che la sua perché il browser è stato codificato con l'accelerazione hardware :)

+0

Grazie mille .. ha funzionato bene ..: D – justmyfreak

+0

questo ha funzionato anche per me. il problema specifico che stavo avendo riguardava le prestazioni di tastiera/battitura durante l'utilizzo di Phonegap + FastClick + Android 4.1.1+ - le prestazioni di digitazione erano ESTREMAMENTE laggose (nessun problema nel browser o in Android 2.3). abilitare questa bandiera ha risolto il problema :-) – Maurice

+0

Wow! funziona davvero MOLTO meglio nel mio terribile Samsung con 2.3 –

2

Ho avuto un problema simile: una pagina con una lista più lunga di div di tema "medio complesso". Il browser del telefono HTC non ha avuto problemi nella visualizzazione. Ma all'interno del rendering dell'app PhoneGap fallito completamente. Ho visto una sorta di WSOD, che è scomparso solo dopo aver toccato il display. Dopo aver toccato, la pagina è stata visualizzata corretta.

Il problema non era a posto, quando ho accorciato la div-list a uno o due elementi div o quando ho ridotto gli elementi secondari all'interno delle div e ridotto lo sforzo di rendering causato dalla complessità del css.

Lo schermo bianco sembrava, se tutto il corpo era invisibile, poiché era visualizzato solo il colore di sfondo dei documenti (per questo ho aggiunto un rosa chiaro). Quindi immagino che il rendering fosse il problema dopo aver letto this thread

Ho provato le varie proposte che ho trovato in this thread per far funzionare l'app senza "WSOD".Ma niente ha funzionato. Alcuni di questi hanno reso l'app molto peggiore.

Infine, dopo un'intera giornata di ricerche, l'ho fatto. Ho impostato all'interno del tag (non il tag) della mia AndroidManifest

<application android:hardwareAccelerated="false" ... 

Ora l'applicazione si comporta nello stesso modo veloce come il mio browser web. Sembra che, se l'accelerazione hardware non è sempre la migliore caratteristica ...

mie versioni: PhoneGap 3.5.0, Android 4.0.3, jQuery v2.1.0, HTC Sense 3.6

Problemi correlati