2010-06-22 4 views
1

Dans mon application, j'ai récemment ajouté un widget d'écran d'accueil. Tout fonctionne bien sauf lorsque vous essayez d'ajouter un widget pour la première fois. Au lieu d'ouvrir l'activité de configuration, une ANR apparaît.Délai d'émission lors de la configuration d'AppWidget

Je suppose que puisque cela fonctionne très bien après le premier crash, le crash est probablement causé par une valeur indéfinie. Ou peut-être que je n'ai pas compris le flux de choses concernant un appWidget.

Mon récepteur est déclaré dans le manifeste avec des métadonnées qui pointent vers l'activité utilisée pour les préférences. Cette activité consiste en une roulette et un bouton. Lorsque le bouton est pressé, un RemoteView 'vide' est transmis à l'hôte et une diffusion est envoyée à mon service qui essaiera de charger les données d'un serveur. Dois-je passer un RemoteView à l'hôte avant l'interaction de l'utilisateur?

L'entrée de journal n'a aucun sens pour moi. J'espère que quelqu'un a une meilleure compréhension de la production du journal que moi:

I/ActivityManager( 51): Displayed activity com.android.settings/.AppWidgetPickActivity: 1086 ms (total 21908 ms) 
E/my-appWidgetProvider( 228): BroadcastReciever enabled 
D/AndroidRuntime( 228): Shutting down VM 
W/dalvikvm( 228): threadid=3: thread exiting with uncaught exception (group=0x4001aa28) 
I/ActivityManager( 51): Starting activity: Intent { act=android.appwidget.action.APPWIDGET_CONFIGURE cmp=se.oskarnordgren.debaser/.widget.WidgetPrefs (has extras) } 
W/InputManagerService( 51): Window already focused, ignoring focus gain of: [email protected] 
W/WindowManager( 51): Attempted to add window with non-application token WindowToken{43890b08 token=null}. Aborting. 
D/dalvikvm( 228): DestroyJavaVM waiting for non-daemon threads to exit 
W/ActivityManager( 51): Timeout of broadcast BroadcastRecord{438c3308 android.appwidget.action.APPWIDGET_UPDATE} - [email protected] 
W/ActivityManager( 51): Receiver during timeout: ResolveInfo{438c3288 se.oskarnordgren.debaser.widget.DebaserWidget p=0 o=0 m=0x0} 
I/ActivityManager( 51): ANR in process: se.oskarnordgren.debaser 
I/ActivityManager( 51): Annotation: Broadcast of Intent { act=android.appwidget.action.APPWIDGET_UPDATE cmp=se.oskarnordgren.debaser/.widget.DebaserWidget (has extras) } 
I/ActivityManager( 51): CPU usage: 
I/ActivityManager( 51): Load: 0.87/0.36/0.13 
I/ActivityManager( 51): CPU usage from 10094ms to 20ms ago: 
I/ActivityManager( 51): com.android.settings: 6% = 3% user + 2% kernel/faults: 4014 minor 5 major 
I/ActivityManager( 51): system_server: 3% = 2% user + 1% kernel/faults: 12 minor 
I/ActivityManager( 51): logcat: 2% = 0% user + 1% kernel/faults: 108 minor 
I/ActivityManager( 51): android.process.acore: 0% = 0% user + 0% kernel/faults: 2 minor 
I/ActivityManager( 51): se.oskarnordgren.debaser: 0% = 0% user + 0% kernel/faults: 11 minor 
I/ActivityManager( 51): com.android.phone: 0% = 0% user + 0% kernel/faults: 2 minor 
I/ActivityManager( 51): adbd: 0% = 0% user + 0% kernel 
I/ActivityManager( 51): sh: 0% = 0% user + 0% kernel/faults: 98 minor 
I/ActivityManager( 51): TOTAL: 5% = 3% user + 1% kernel 
I/ActivityManager( 51): Removing old ANR trace file from /data/anr/traces.txt 
I/Process ( 51): Sending signal. PID: 228 SIG: 3 
I/dalvikvm( 228): threadid=7: reacting to signal 3 
I/dalvikvm( 228): Wrote stack trace to '/data/anr/traces.txt' 

Pourquoi puis-je obtenir un ANR au lieu de l'activité référencée dans android:configure?

Je pourrais coller plus de code si seulement je savais quelles parties sont importantes ici.

+0

J'ai le même genre de problème (peut-être) lié aux lignes: Délai d'émission BroadcastRecord, Receiver pendant le délai: ResolveInfo ... alors j'ai "INFO/ActivityManager (76): Processus com.cousinHub.appname: distant (pid 819) est mort. " Je vais poster une question sur Stackoverflow ... peut-être que vous pouvez aussi suivre les réponses que je vais y apporter. J'espère que cela vous aidera finalement – Hubert

+0

le lien vers ma question: http://stackoverflow.com/questions/3117350/alarmmanager-and-broadcastreceiver-instead-of-service-is-that-bad-timeout-pr – Hubert

Répondre

0

Ceci est une vieille question, toujours vouloir cette réponse pour aider les autres face à ce problème.

Nous n'avons pas pu appeler getApplicationContext dans le récepteur de diffusion. Cela peut causer ANR si vous le faites.

Questions connexes