ユーザ用ツール

サイト用ツール


asynctaskメモ

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
asynctaskメモ [2015/09/16 10:31]
sou
asynctaskメモ [2015/12/11 13:43] (現在)
sou [パラレル実行時のスレッドプール]
ライン 1: ライン 1:
-*** スレッドプール ​***\\+===== Executor ===== 
 + 
 +■AsyncTaskで選択出来る実行モード\\ 
 +・THREAD_POOL_EXECUTOR (パラレル実行)\\ 
 +・SERIAL_EXECUTOR (シリアル実行)\\ 
 +\\ 
 +■AsyncTask#​execute() を実行した際の実行モード\\ 
 +・Gingerbread(2.x系)\\ 
 +THREAD_POOL_EXECUTORが採用される\\ 
 +\\ 
 +・ICS以降(4.x系~)\\ 
 +SERIAL_EXECUTORが採用される\\ 
 +\\ 
 +■ICS以降でパラレル実行するには\\ 
 +AsyncTask#​executeOnExecutor(Executor,​ Object...)メソッドを使用する\\ 
 +ExecutorにAsyncTask.THREAD_POOL_EXECUTORを指定\\ 
 +\\ 
 + 
 +===== パラレル実行時のスレッドプール ​===== 
 +下記のように設定されている模様。\\
 並列多重度:​ 5 (CORE_POOL_SIZE)\\ 並列多重度:​ 5 (CORE_POOL_SIZE)\\
 最大プール数:​ 128 (MAXIMUM_POOL_SIZE)\\ 最大プール数:​ 128 (MAXIMUM_POOL_SIZE)\\
 キューイング数:​ 10 (sPoolWorkQueue)\\ キューイング数:​ 10 (sPoolWorkQueue)\\
  
-並列処理が5多重を超えるとキューイングされる。 +並列処理が5多重を超えるとキューイングされる。\\ 
-要求のキューイングが出来なかった場合は最大128までプールする。+要求のキューイングが出来なかった場合は最大128までプールする。\\ 
 +\\ 
 +GridViewを高速スクロールした際などに、プール数が128を超えてしまい、\\ 
 +RejectedExecutionExceptionがthrowされる\\ 
 + 
 +===== Viewの参照を渡す場合はWeakReferenceを使用する ===== 
 +ViewがGCで破棄されるタイミングはActivityが破棄されるタイミングであるべきなので、\\ 
 +AsyncTaskがViewの参照を保持しないよう、WeakReferenceを使用する。 
 + 
asynctaskメモ.1442367096.txt.gz · 最終更新: 2015/09/16 10:31 by sou