2013-03-19 6 views
5

Ich habe und Android-App, die dauert> = 5 Sekunden nach dem Klicken auf das Symbol angezeigt wird.App dauert zu lange zum Starten

Sobald ich auf das Symbol klicke, erhalte ich den schwarzen Bildschirm mit dem Namen der App in der Statusleiste. Nach 5+ Sekunden wird der Startbildschirm angezeigt.

I this post auf SO bezeichnet, die ich von Stack-Trace folgende Ergebnis wurde

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) 

Wie Sie oben log sehen in kann, ist der 1. Anweisung 16:13:14.915: I/ActivityManager(59): Starting activity und letzte ist 16:13:25.403: I/ActivityManager(59): Displayed activity.

Also gibt es eine Lücke von ca. 10 bis 11 Sekunden.

Jede Hilfe wird geschätzt.

+0

Was machen Sie in Ihren 'onCreate()', 'onResume()', 'onStart()' Methoden? Wenn Sie dort schwere Arbeit verrichten, wird die App langsam an den Start gebunden. – nhaarman

+0

auch wenn ich nur 'setContentView (R.layout.main);' verwende, dann dauert es auch lange. Ich verwende "ViewFlipper" für meine App, die ungefähr 50 Bildschirme enthält. – GAMA

+0

posten Sie bitte Ihren Code für Ihre Startaktivität – almuneef

Antwort

2

Sie könnten etwas Schweres auf der onCreate() oder onResume() der Aktivität ausführen ... versuchen Sie es zu debuggen, um zu sehen, ob Sie Datenbank- oder E/A-Operationen in diesen Methoden direkt ausführen. Sie können auch die StrictMode aktivieren, um einen besseren Überblick darüber zu erhalten, was Ihre App verlangsamt.

+1

auch wenn ich nur 'setContentView (R.layout.main);' verwende, dann dauert es auch lange. Ich verwende "ViewFlipper" für meine App, die ungefähr 50 Bildschirme enthält. – GAMA

+1

LOL :) 50 Bildschirme in Ansicht Flipper. – Midhere

+0

Ich habe 6 bis 7 verschiedene Flüsse und jeder Fluss enthält 7 bis 8 Bildschirme. Es kommt also auf ungefähr 50 Bildschirme. – GAMA