2012-12-11 10 views
8

mi sembra di avere un problema irrisolvibile, ho trascorso il fine settimana su di esso, non poteva farlo fisso. Quando eseguo una semplice app di test con due attività: 1. Mainattività: alcuni pulsanti, un timer (thread in background) e una richiesta chiara a un db SQLite. 2. Seconda attività: alcuni pulsanti, solo uno ha un ascoltatore su clic, quando si fa clic su di esso, si torna semplicemente alla prima attività. Uso i pulsanti grandi (larghezza dello schermo di circa un quarto dell'altezza dello schermo), le risorse del layout xml non contengono elementi di peso nidificati o altre cose esotiche.prestazioni Android 11 e al di sopra

Si tratta di un progetto di test, non ha altre funzionalità.

Ho riscontrato il seguente problema grave: -quando imposto il livello api nel file manifest a 3, tutto funziona perfettamente. (schermo automaticamente in modalità compatibilità) -quando imposto il livello API 11 o superiore, possono essere necessari fino a 10 secondi per caricare la seconda attività. Dopo la prima apertura della seconda attività, le cose sembrano essere memorizzate nella cache, il ritardo non esiste più. -quando imposto il livello API a 11 o superiore, e imposto la modalità compatibilità (schermo res): nessuna modifica, il ritardo rimane.

Ho costruire questo progetto di test perché mi sono imbattuto in questo problema durante l'aggiornamento di un app più vecchio. Funzionava senza intoppi con i vecchi livelli API, ogni volta che lo inserivo su Android versione 3 o successiva, si verificano ritardi fino a 25 secondi! (anche per l'apertura di un'attività che mostra solo il testo statico ...).

sto testando su un nuovo Galaxy Tab, che non può essere il problema. Ho passato ore a cercare su Google una soluzione, non ho mai trovato nulla di simile. Ho persino completamente disinstallato Eclipse e tutte le risorse Android e ho avuto tutto fresco installato e aggiornato (incluso un reset di fabbrica del mio Galaxy Tab). Senza fortuna.

ho fatto una traccia, il problema è in GLES20Canvas.nDrawDisplayList. Sembra che la costruzione di questa lista prende un sacco di tempo, anche se non c'è molto da costruire ...

Qualcuno ha un indizio su come posso risolvere questo problema?

Grazie, Martin

risposta

1

GLES20Canvas.nDrawDisplayList

quando questo arriva è expected to have a large portion of the time if you are drawing a lot, especially very big views.

vorrei si dà si collega per il fare e Dont di da android-30-hardware-acceleration

+1

Grazie.Ho letto quell'articolo prima e ho sperimentato. Senza fortuna. Il fatto è che anche una semplice vista testo ha bisogno di secondi per il rendering (nient'altro nel layout). L'unica soluzione che ho trovato finora funziona disattivando l'accelerazione hardware. – martin

+0

Romain Guy è solo un apologeta di Google e non può essere preso la briga di affrontare i problemi reali che gli sviluppatori stanno avendo. – StackOverflowed

3

ho trovato una soluzione a questo problema esaminando questo post: http://code.google.com/p/android/issues/detail?id=22514

La soluzione è quella di disabilitare l'accelerazione hardware.

Nel AndroidManifest.xml, nel tag applicazione, aggiungere:

android:hardwareAccelerated="false" 

Ora tutto funziona di nuovo liscia. Sfortunatamente l'accelerazione hardware non rende l'app più veloce all'avvio.

+0

Potrebbe non voler disabilitare l'accelerazione hardware per tutti i dispositivi, vedi -> http://stackoverflow.com/a/21791909/546901 Ho notato questo problema solo su un dispositivo, quello HTC. I risultati del traceview mostrano che il problema è con nDrawDisplayList. I risultati di Traceview per qualsiasi altro dispositivo che ho provato vanno bene. Sembra implicare un bug del dispositivo o del sistema operativo, non un bug con il codice dell'applicazione. Sembra facile da riprodurre con listview a bassa profondità o scrollview sui dispositivi che le persone segnalano vedendo questo problema (HTC One o Galaxy Nexus). –

Problemi correlati