誰かがそれに光を当てることができますか?パフォーマンスを向上させるには、どちらを使用する必要がありますか?
ネイティブ Thread と AsyncTask を一度起動する場合を想像すれば、パフォーマンスは変わらないと思います。
USER
を介して、あるタスクの進行状況に関する関連情報をポテンシャルに通知したくない場合は、通常、ネイティブ スレッドが使用されますUI
。ここでは、ネイティブ スレッドがスレッドと同期されておらず、ネイティブ スレッドUI
から UI 操作を実行できないため、失敗します。
一方、AsyncTask はバックグラウンド作業と UI 作業を組み合わせ、UI と同期するメソッドを提供し、ライフサイクルの適切なメソッドを呼び出すことでいつでも UI の更新を実行できるようにします。
通常、タスクが 5 秒以上続く場合は、次のことを通知する必要がありますUSER
。
「バックグラウンドで何か作業中です。完了するまでお待ちください」
確かに、これはさまざまな方法で両方で到達できますが、これはタスクの特性に大きく依存します-タスクの進行状況を表示する必要がある場合(既にダウンロードされているMBの量、ファイルの数をコピーし、進行中の各ダイアログの名前を表示します)など)またはそうしません(たとえば、開始メッセージと終了メッセージのみを使用して「サイレント」で大きなデータ構造を作成します)。
だから、私の回答の最後に:
パフォーマンスを向上させるには、どちらを使用する必要がありますか?
開発者ごとに経験やコーディング スタイルが異なるため、完全に正しい答えは得られないと思います。私が言ったように、それらのパフォーマンスは変わりません。私は同じだと思います(50MBのファイルを読むなら、ネイティブスレッドもAsyncTaskも速く読むことはありません)。それはまた、仕事の性質とあなたの個人的な選択に依存します.
アップデート:
はるかに長い期間続く可能性のあるタスクの場合、パッケージAPI
によって提供されるツールjava.util.concurrent
(ThreadPoolExecutor、FutureTask など)についても考えてみることができます。