1

私は、アドレスを対応する連絡先の名前にマップし、それらを所定の形式で表示する必要があるUIウィジェットを持っています。 私は、AsyncTaskを使用してdoInbackground()でアドレスを検索し、onPostExecute()のウィジェットに名前の形式を表示するためのクエリを実行します。 アドレスに制限がある場合、これはうまく動作します。 しかし、マッピングするアドレスの数が150のオーダーで増加するとRejectedExecutionExceptionが発生します。 これは、maxPoolsizeが128であり、AsyncTaskのキューが10に制限されているためです。 私はキューを無限にしようとしました...しかし、ウィジェットの名前の追加は非常に遅くなります。これは、無制限のキューmaxPoolSizeが無視され、一度にcorePoolSizeスレッド5しか使用できないためです。Android AsyncTaskの代替品

このユースケースで使用できるAsyncTask以外の代替方法があるかどうかを知りたかったのですか? ? クローンAsyncTask &コア/最大プールサイズの増加は、多くの同時スレッド(無効なリソース使用)&スケジューリングオーバーヘッドを意味するため、適切な動作ではないようです。 現在のところ、アドレスには制限がないため、500を超えて簡単に移動することができます。 このようなケースはどのように処理する必要がありますか?

答えて

0

約500個のアドレスのマッピングを約80個の小さな部分で分割し、すべての部分に別々のAsyncTaskを使用する方法があります。

私がお勧めする別の方法は、この作業を行うServiceを使用することです。

+0

これは、80個のアドレスが解決されない、つまり照会されないと、UIに更新がないことを意味します。このシナリオではどのようにサービスを使用できますか? – deeps