2013-03-19 15 views
5

Ho e un'app per Android che richiede> = 5 secondi per essere visualizzata dopo aver fatto clic sull'icona.L'app impiega troppo tempo per l'avvio

Non appena faccio clic sull'icona, viene visualizzata la schermata nera con il nome dell'app nella barra di stato. Dopo 5+ secondi, viene visualizzata la schermata iniziale.

ho fatto riferimento this post su SO che e ho ottenuto il risultato di analisi dello stack

16:13:14.915: I/ActivityManager(59): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=packageName/.SelectType } 
16:13:14.954: I/SurfaceFlinger(59): 
16:13:14.954: I/SurfaceFlinger(59): SurfaceFlinger::createSurface() : layer->mIdentity=176, LayerName= Starting packageName 
16:13:14.954: I/SurfaceFlinger(59): SurfaceFlinger::createSurface() : layer->clientIndex=2, surfaceHandle->mToken=0x2 
16:13:16.026: D/AnrParser(184): Waiting kernel log . . . 
16:13:16.614: D/dalvikvm(6890): GC_FOR_MALLOC freed 12274 objects/785016 bytes in 135ms 
16:13:17.784: D/dalvikvm(133): GC_EXTERNAL_ALLOC freed 415 objects/21624 bytes in 1285ms 
16:13:17.914: D/dalvikvm(6890): GC_FOR_MALLOC freed 5762 objects/339024 bytes in 90ms 
16:13:18.174: D/AnrParser(184): Waiting kernel log . . . 
16:13:18.344: E/keystore(6966): chdir: /data/misc/keystore: Permission denied 
16:13:19.693: D/dalvikvm(6890): GC_FOR_MALLOC freed 5994 objects/372624 bytes in 93ms 
16:13:20.173: D/AnrParser(184): Waiting kernel log . . . 
16:13:22.173: D/AnrParser(184): Waiting kernel log . . . 
16:13:22.743: I/SurfaceFlinger(59): 
16:13:22.743: I/SurfaceFlinger(59): SurfaceFlinger::createSurface() : layer->mIdentity=177, LayerName= packageName/packageName.SelectType 
16:13:22.743: I/SurfaceFlinger(59): SurfaceFlinger::createSurface() : layer->clientIndex=0, surfaceHandle->mToken=0x0 
16:13:22.983: D/dalvikvm(6890): GC_FOR_MALLOC freed 21467 objects/1097728 bytes in 119ms 
16:13:23.403: E/keystore(6973): chdir: /data/misc/keystore: Permission denied 
16:13:24.173: D/AnrParser(184): Waiting kernel log . . . 
16:13:24.923: W/ActivityManager(59): Launch timeout has expired, giving up wake lock! 
16:13:25.264: W/ActivityManager(59): Activity idle timeout for HistoryRecord{47f56388 packageName/.SelectType} 
16:13:25.403: I/ActivityManager(59): Displayed activity packageName/.SelectType: 10206 ms (total 10206 ms) 

seguente Come si può vedere nel precedente registro, prima affermazione è 16:13:14.915: I/ActivityManager(59): Starting activity ed ultimo è 16:13:25.403: I/ActivityManager(59): Displayed activity.

Quindi c'è una distanza di ca. 10 a 11 secondi.

Qualsiasi aiuto apprezzato.

+0

Cosa stai facendo nei metodi 'onCreate()', 'onResume()', 'onStart()'? Se fai un lavoro pesante lì, l'applicazione è destinata ad avviarsi lentamente. – nhaarman

+0

anche se uso solo 'setContentView (R.layout.main);', quindi richiede anche molto tempo. Sto usando 'ViewFlipper' per la mia app che ha circa 50 schermi al suo interno. – GAMA

+0

per favore pubblica il tuo codice per la tua attività di lancio – almuneef

risposta

2

Potrebbe essere in esecuzione qualcosa di pesante su onCreate() o onResume() dell'attività ... provare a eseguire il debug per vedere se si stanno eseguendo operazioni di database o I/O direttamente in questi metodi. Puoi anche attivare lo StrictMode per una panoramica migliore di ciò che sta rallentando la tua app.

+1

anche se uso solo 'setContentView (R.layout.main);', quindi anche richiede molto tempo. Sto usando 'ViewFlipper' per la mia app che ha circa 50 schermi al suo interno. – GAMA

+1

LOL :) 50 schermi in vista flipper. – Midhere

+0

Ho da 6 a 7 diversi flussi e ogni flusso contiene da 7 a 8 schermi. Quindi arriva a circa 50 schermate – GAMA

Problemi correlati