50 votes

Comment réparer l'erreur "process is bad" pour un widget Android?

J'ai développé un Widget Android, et ça marchait très bien. J'ai ajouté quelques fonctionnalités supplémentaires et poussé une mise à jour via l'Android Market. Maintenant, les gens se plaignent du fait qu'il ne fonctionne plus.

L'erreur que je vois dans les journaux:

07-14 10:33:44.016: WARN/ActivityManager(78): Unable to launch app ... 
for broadcast Intent { act=android.appwidget.action.APPWIDGET_ENABLED 
cmp=... }: process is bad 
07-14 10:33:44.026: WARN/ActivityManager(78): finishReceiver called 
but none active 
07-14 10:33:44.026: WARN/ActivityManager(78): Unable to launch app ... 
for broadcast Intent { act=android.appwidget.action.APPWIDGET_UPDATE 
cmp=... (has extras) }: process is bad 
07-14 10:33:44.036: WARN/ActivityManager(78): finishReceiver called 
but none active 

J'ai cherché, mais je ne trouve nulle part ce qu'est le processus erreur de mauvais moyens, donc je n'ai aucune idée sur comment résoudre ce problème. Redémarrer le téléphone (ou émulateur) fait l'erreur de s'en aller, mais ce n'est pas ce que je veux que mes utilisateurs à faire. Quelqu'un pourrait-il m'aider à expliquer ce que la cause de l'erreur et comment la corriger?

10voto

Vituel Points 398

Cela m'est arrivé lorsque mon BroadcastReceiver a fait fuir à plusieurs reprises une exception, ce qui a provoqué la destruction de mon application par le système. Les prochains appels au destinataire donneraient le journal "Process is bad".

La solution dans mon cas était de s’assurer qu’aucune exception ne fuyait du BroadcastReceiver.

Ce sont les journaux lorsque l'application est supprimée (essayez de les rechercher et de trouver la cause):

 W/ActivityManager﹕ Process com.company.app has crashed too many times: killing!
I/ActivityManager﹕ Killing proc 9344:com.company.app/u0a10239: crash
 

9voto

mobibob Points 2657

Je rencontre le même problème et ma théorie actuelle est que l'application a été bloquée et que, lors de son redémarrage, elle contenait les mêmes mauvaises données persistantes qui l'ont fait planter à chaque redémarrage. Lorsque cela se produit trop souvent, l'application est "forcée" par le système d'exploitation. Mon aide de bande est d'avoir un événement tactile "setOnClickPending" que l'utilisateur va toucher (par frustration si nécessaire) et qui sera traité en interne dans l'application et réinitialisera l'application.

8voto

NPike Points 5187

Je viens de faire l'expérience moi-même juste avant l'emballage pour le marché. Je suivais les instructions et ajoutais l'attribut android: label = "@ string / app_name" à l'élément d'application dans mon manifeste ...

  1. Désinstallez votre application
  2. Redémarrer le téléphone / émulateur
  3. Push nouvelle application sans cet attribut

Alto! Travaille pour moi maintenant!

EDIT: pour correspondre aux commentaires.

4voto

Dan J Points 7314

J'ai frappé un process is bad d'erreur sur mon HTC Sensation OS 2.3.4 après la suppression de l' INTERNET la permission de mon AndroidManifest.xml.

W/ActivityManager( 253): Impossible de lancer l'application MY_DOMAIN.flashback/10132 pour la diffusion à l'Intention { act=android.l'intention.d'action.PHONE_STATE flg=0x20000000 (a extras) }: le processus est mauvais

J'ai essayé beaucoup de différentes solutions de contournement, et j'ai trouvé la seule façon de résoudre était:

  • La désinstallation de l'application par le biais des Paramètres -> Applications.
  • Retirez la batterie du téléphone (à l'aide de l'Android "Power off" menu n'a pas de travail).
  • Tournez l'appareil à nouveau.
  • Installez l'APK en utilisant à nouveau adb install <myapp>.

Je veux profiter de cette occasion pour liste de ce qui n'a PAS de travail pour moi (comme il semble qu'il y a beaucoup de RUMEUR sur la façon de corriger cette erreur):

  • Désinstaller, redémarrer à l'aide d'un téléphone Android menu (appuyez et maintenez sur le bouton et sélectionnez "Power off"), tournez à nouveau, de le réinstaller.
  • Désinstaller, utilisez adb kill-server, alors adb start-server, réinstallez-le.
  • Désinstallation, exécutez adb shell alors ps, cela ne l'a pas montrer mon application qui s'exécute à tous.
  • Désinstaller, faire une construction propre dans Eclipse, réinstallez-le.

Je me demande si le problème sous-jacent a été causé par l'une de mes applications de plus en plus petits en taille. Je pense qu'il a utilisé pour décompresser à l' flashback-1.apk et flashback-2.apk sur l'appareil, alors que maintenant c'est seulement le déballage d'un seul flashback-1.apk.

2voto

tsinyun Points 21

Je viens de recevoir cette erreur. Je corrige l'erreur et je supprime une partie du code source invoquée par OnConnectionReceiver.onReceiver() , peut-être que l'invocation coûtera un certain temps.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X