Ray*_*Ray 11 android transactions exception android-package-managers
我的应用程序读取所有已安装的APK文件的列表,然后遍历列表以读取APK信息,但它会抛出TransactionTooLargeException异常.
根据我在这里阅读的http://developer.android.com/reference/android/os/TransactionTooLargeException.html,谷歌建议将大型交易分解为较小的交易.然而,似乎这种情况发生在循环浏览APK列表的中间.如果我抓住异常并继续它,其余的一切正常.有没有办法在调用getPackageInfo时减少内存使用量?即使它已经返回,该调用是否会保留一些内容.
这是发生时的痕迹:
at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:89)
at com.myapp.appreader.getAppDetails(Appreader.java:207)
at com.myapp.appreader.collectData(Appreader.java:99)
at com.myapp.appreader.AppDataCollectionTask.run(AppDataCollectionTask.java:26)
at com.myapp.appreader.service.AppDataTaskExecutor$AppDataAsyncTask.executeTask(AppDataTaskExecutor.java:439)
at com.myapp.appreader.service.AppDataTaskExecutor$AppDataAsyncTask.doInBackground(AppDataTaskExecutor.java:327)
at com.myapp.appreader.service.AppDataTaskExecutor$AppDataAsyncTask.doInBackground(AppDataTaskExecutor.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:856)\nCaused by: android.os.TransactionTooLargeExceptionat android.os.BinderProxy.transact(Native Method)
at android.content.pm.IPackageManager$Stub$Proxy.getPackageInfo(IPackageManager.java:1538)
at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:84)
Run Code Online (Sandbox Code Playgroud)
Com*_*are 25
Binder事务有1MB的限制,这意味着大多数IPC调用的大小必须适中.
如果TransactionTooLargeException在从PackageManager(例如getPackageInfo())检索数据时遇到Binder或类似的Binder失败,请尝试通过多次调用分割您的请求,GET_META_DATA每次调用的标记较少(例如).希望这会减少任何单个交易的规模,使其低于1MB的限制.
此外,如果您使用该调用PackageManager返回多个结果(例如,getInstalledPackages()尝试在该调用上请求没有标志,然后单独检索每个包的值,以避免一次获得大量条目的大量数据).
当然,只使用您需要的标志,特别是如果您的呼叫可能包含一些标志.GET_META_DATA这是一个典型的例子:许多应用程序使用它(例如,用于Play服务),但如果您不需要知道元数据信息,请不要请求它.
| 归档时间: |
|
| 查看次数: |
20509 次 |
| 最近记录: |