我收到一位安装了很多应用程序的用户发来的邮件,称当我的应用程序使用以下代码收集活动信息时,他遇到了问题:
getPackageManager().queryIntentActivities(mAinIntent, 0)
完整来源在这里:https://github.com/ligi/FAST 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 边界上运行似乎存在问题,但如何摆脱那里呢?我还能如何获得所需的信息?有没有办法对数据进行分块?
我不久前使用相同的用户输入遇到了这个错误。尽管我抛出的事件有所不同。我最终捕获了异常并优雅地向用户报告安装了太多具有处理能力的应用程序。在数十万次安装中,我只在一个项目中偶然看到此错误不到五次,我知道这不是借口,但有些设备只是没有堆来处理对每个安装的应用程序的意图进行索引在设备上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)