1

重複の可能性:
Handler vs AsyncTask vs Thread

Androidの初心者で、最初のアプリを開発中です...

UIスレッドとは別のプロセスを作成するには、どの種類のスレッドが適していますか?

AsyncTask または Handler と Message で Thread クラスを拡張しますか?

私はこのスレッドを通過しまし た.オブジェクトをハンドラーメッセージに入れます

その人は、「ああ、私は AsyncTask オブジェクトを使用しないようにしています。コードの結合が増えすぎると思うからです。」.

コード結合とは何を意味しますか? Handler および Message クラスで Java スレッドを使用する必要がありますか、それとも Async タスクを使用する必要がありますか?

4

3 に答える 3

1

これがあなたの最初のアプリになるので、しばらくの間この質問を片付けるのが最善でしょう。代わりに、アプリケーションをとにかく機能させたいと思うでしょう。そうすることで、自分で決めるのに十分な経験を積むことができます。

AsyncTaskとは言っても、バックグラウンドで何かを実行し、進行状況と結果をUIに表示することが必要な場合は、これを使用する方が簡単なようです。

どちらのアプローチでも実際に問題となるのは、デバイスを回転させるとUIが再作成されることです。また、古いUIへの参照をthread / asynctaskに保存し、それらを使用すると、アプリがクラッシュします。

于 2012-08-26T08:41:59.550 に答える
1

AsyncTask は、進行状況を報告し、結果を UI に公開しながら、(メイン スレッドのブロックを回避するために) ワーカー スレッドで実行する必要がある明確に定義されたタスクの優れた抽象化です。このようなタスクの例は、インターネットからのファイルのダウンロード、Web サービスの呼び出し、データベースのクエリなどです。これらのタスクを実行するためのワーカー スレッドのプールを維持します。AsyncTask を使用すると、コードを記述してスレッドを作成および管理し、UI 更新を UI スレッドにディスパッチする必要がなくなります。

バックグラウンド タスクが適切に定義されたタスクではなく進行中のプロセスである場合、AsyncTask は適切ではありません。例 : 音楽の再生、継続的な位置追跡、継続的なニュース フィードのダウンロードなど。このような場合は、別のスレッドを作成して管理するのが適切です。

于 2012-08-26T10:20:34.900 に答える
1

AsyncTask は、バックグラウンドで Java のネイティブ スレッドを使用します。それらを使用する利点は、onPreExecute、doInBackground、および onPostExecute の 3 つのメソッドを取得できることです。これにより、作業が楽になります。

于 2012-08-26T09:28:21.673 に答える