Подтвердить что ты не робот

Менеджер пакетов умер

Я получил почту от пользователя, у которого установлено много приложений, у него проблемы, когда мое приложение собирает информацию о деятельности с этим кодом:

getPackageManager().queryIntentActivities(mAinIntent, 0)

весь источник здесь: https://github.com/ligi/FAST

вот что происходит

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

Кажется, проблема в том, что я бегу против границы 1mb, но как убраться оттуда? Как еще я могу получить необходимую информацию? Есть ли способ разбить данные?

4b9b3361

Ответ 1

Я столкнулся с этой ошибкой некоторое время назад с тем же вводом пользователя. Хотя мое брошенное событие было другим. Я закончил тем, что выбрал исключение и изящно отчитал пользователя, что слишком много приложений установлено с возможностью обработки. Из нескольких сотен тысяч инсталляций я видел эту ошибку только в пять раз для проекта, я знаю, что это не оправдание, но некоторые устройства просто не имеют кучи для обработки индексирования намерений каждого установленного приложения на устройстве.