2013-04-02 13 views
13

Dostałem mail od użytkownika, który ma dużo aplikacji zainstalowanych, że ma problemy, kiedy moja aplikacja gromadzi informacje o aktywności z tym kodem:Zarządca pakietu zmarł

getPackageManager().queryIntentActivities(mAinIntent, 0) 

cały źródło tutaj: https://github.com/ligi/FAST

to co się dzieje

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 

wydaje się, że problem, który używam na granicy 1mb, ale jak się stamtąd wydostać? Jak inaczej mogę uzyskać potrzebne informacje? Czy istnieje sposób na porwanie danych?

+1

Czy to literówka 'TransactionTooLargeExceptionTransactionTooLargeException'? [Zobacz tę] (http://developer.android.com/reference/android/os/TransactionTooLargeException.html) * Bufor transakcji Binder ma ograniczony stały rozmiar, obecnie 1 MB, który jest wspólny dla wszystkich transakcji w toku procesu . W związku z tym ten wyjątek może zostać zgłoszony w przypadku wielu transakcji w toku, nawet jeśli większość pojedynczych transakcji ma umiarkowany rozmiar. * – t0mm13b

+0

'Klasa AppInfo', prywatna ikona BitmapDrawable; "... czy jedzą za dużo pamięci? Dlaczego przekazujesz wiele kopii 'Contexts' z wnętrza AsyncTask? – t0mm13b

+0

yea - wydaje się być c & p'o - nie ma pojęcia, jak to podwoić. Czy widzisz obejście tego problemu? – ligi

Odpowiedz

5

Wpadłem na ten błąd jakiś czas temu z tym samym wpisem użytkownika. Chociaż moje wydarzenie było inne. Skończyło się na tym, że złapałem wyjątek i z wdzięcznością poinformowałem użytkownika, że ​​zainstalowano zbyt wiele aplikacji z możliwością obsługi. Spośród kilkuset tysięcy instalacji widziałem ten błąd osobno mniej niż pięć razy dla projektu, wiem, że to nie jest wymówka, ale niektóre urządzenia po prostu nie mają kupki do obsługi indeksowania celów każdej zainstalowanej aplikacji na urządzeniu.

Powiązane problemy