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 の境界に対して実行しているという問題があるようですが、そこから抜け出すにはどうすればよいですか? 他に必要な情報を取得するにはどうすればよいですか? データをチャンクアップする方法はありますか?

4

1 に答える 1

7

少し前に同じユーザー入力でこのエラーに遭遇しました。私の投げたイベントは違いましたが。私は例外をキャッチし、処理する機能を備えたインストール済みのアプリが多すぎることをユーザーに適切に報告しました。数十万回のインストールのうち、私はこのエラーを手に負えないプロジェクトで 5 回未満しか見たことがありません。言い訳にはならないことはわかっていますが、一部のデバイスには、インストールされている各アプリケーションのインテントのインデックス作成を処理するためのヒープがありません。デバイス上。

于 2014-12-11T20:13:41.870 に答える