Le gestionnaire de Package est mort

J'ai reçu un courrier d'un utilisateur qui a beaucoup d'applications installées qu'il a des problèmes lors de mon application recueille de l'activité de l'info avec ce code:

getPackageManager().queryIntentActivities(mAinIntent, 0)

source en entier ici: https://github.com/ligi/FAST

c'est ce qui arrive

Caused by: java.lang.RuntimeException: Package manager has died
at android.app.ApplicationPackageManager.queryIntentActivities(ApplicationPackageManager.java:479)
at org.ligi.fast.BaseAppGatherAsyncTask.doInBackground(BaseAppGatherAsyncTask.java:34)
at org.ligi.fast.BaseAppGatherAsyncTask.doInBackground(BaseAppGatherAsyncTask.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
... 5 more
Caused by: android.os.TransactionTooLargeExceptionTransactionTooLargeException
at android.os.BinderProxy.transact(Native Method)
at android.content.pm.IPackageManager$Stub$Proxy.queryIntentActivities(IPackageManager.java:2230)
at android.app.ApplicationPackageManager.queryIntentActivities(ApplicationPackageManager.java:473)
... 9 more
Log:
0 D: Writing unhandled exception to: /data/data/org.ligi.fast/files/3.7-1364933885194.tracedroid

il semble y avoir un problème que je suis en cours d'exécution à l'encontre de l'1 mo de frontière, mais comment sortir de là? Sinon, comment puis-je obtenir l'information nécessaire? Est-il un moyen de segmenter les données?

  • C'est qu'une faute de frappe TransactionTooLargeExceptionTransactionTooLargeException? Voir le Le Classeur de transaction de la mémoire tampon a une limite de taille fixe, qui est actuellement de 1 mo, qui est partagée par l'ensemble des transactions en cours pour le processus. Par conséquent, cette exception peut être levée lorsqu'il y a de nombreuses opérations en cours, même lorsque la plupart des opérations de taille moyenne.
  • AppInfo classe, private BitmapDrawable icon; ... sont-ils manger trop de mémoire? Pourquoi êtes-vous passé plusieurs copies de Contexts de l'intérieur de l'AsyncTask?
  • oui - semble être un c&p o - aucune idée de comment ce doublé. Voyez-vous une solution pour contourner le problème?
  • La chose est, si son balayage toutes les applications, l'app icônes varient en taille, que pourrait-il être, peut-être en utilisant WeakReference à l'image? Sonne comme la classe AppInfo aurait besoin d'être optimisé...
  • comment réduire la taille de cette transaction? Je ne pense vraiment pas qui pourrait aider ..
  • Était-il Dianne Hackborn que mentionné qu'il serait plus efficace d'utiliser un drawable plutôt que des bitmaps [groups.google.com/forum/#!topic/android-développeurs/KKEyW6XdDvg] Voir l'exemple de groupes de discussion... et aussi ici Voir ce DONC, la Question... Suis préoccupé de ce que vous êtes en possession de plusieurs copies du contexte et des bitmaps..
  • Je suis d'accord avec @ligi. Je ne vois pas comment cette exception lors de l'appel de queryIntentActivities a rien à voir avec drawable tailles. @ligi, malheureusement je soupçonne que vous êtes hors de la chance. Il n'y a pas de mécanisme de pagination ou quelque chose comme ça pour PackageManager appels.

InformationsquelleAutor ligi | 2013-04-02