2013-04-02 45 views
13

我收到一封電子郵件從誰擁有大量的應用程序的安裝,他有問題,當我的應用程序集與此代碼的活動信息用戶:包經理人已去世

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邊界運行,但如何離開那裏?我還能如何獲得所需的信息?有沒有辦法整理數據?

+1

那是一個錯字'TransactionTooLargeExceptionTransactionTooLargeException'? [見本](http://developer.android.com/reference/android/os/TransactionTooLargeException.html)*活頁夾事務緩衝器具有有限的固定大小,目前的1Mb,其通過所有交易進行共享的過程。因此,這個異常可以當有進步很多交易甚至當大多數個人交易是大小適中的拋出* – t0mm13b

+0

'AppInfo'類,'私人BitmapDrawable圖標。 '......他們是否吃掉了太多的記憶?你爲什麼要從AsyncTask內部傳遞'Contexts'的多個副本? – t0mm13b

+0

是啊 - 似乎是一個c&p'o - 不知道如何這一倍。你看到解決問題的方法嗎? – ligi

回答

5

我使用相同的用戶輸入就遇到了這個錯誤前一陣子。雖然我拋出的事件是不同的。我最終捕捉到異常並優雅地向用戶報告,安裝了太多能夠處理的應用程序。在幾十萬次安裝中,我只看到了一個項目的錯誤不到5次,我知道這不是一個藉口,但有些設備根本沒有處理索引每個安裝的應用程序的意圖的堆在設備上。