非同期タスクとスレッドの関係について疑問に思っていますか? それぞれが新しいものを作成します, それはキャッシュされていますか, プールされています.
2 に答える
デフォルトでは、Asynctask はシリアル エグゼキューターを使用するため、単一のスレッドを使用してすべての asynctasks を単一のプロセスで実行します。しかし、あなたはそれを変えることができます。
ドキュメントを確認してください。
HONEYCOMB を開始すると、並列実行によって引き起こされる一般的なアプリケーション エラーを回避するために、タスクは単一のスレッドで実行されるように戻ります。本当に並列実行が必要な場合は、このメソッドの executeOnExecutor(Executor, Params...) バージョンを THREAD_POOL_EXECUTOR で使用できます。
ここで Asynctask のソースを確認することもできます
Android のドキュメント自体から、AsyncTasks は「痛みのないマルチスレッド化」を可能にするため、AsyncTasks は明らかにバックグラウンドでスレッドを使用します。
私は最近、Eclipse で DDMS プラグインを使用して自分のアプリをプロファイルしました。DDMS を使用すると、現在実行中のスレッドの数とその名前を確認できます。
私がそこで見たものから、AsyncTasks はスレッド プールを使用して AsyncTasks を管理します。私の場合、「AsyncTask #1」から「AsyncTask #5」という名前の 5 つのスレッドがあり、1 つのサイクルで次々とアクティブ化されました。
これがあなたの質問の一部に答えることを願っています!