3

によって開始されるActivityとからのバックグラウンドスレッドの実行に違いはありますか?追加:バックグラウンドスレッドはUIと相互作用しません。ServiceActivity

現在、から起動されるバックグラウンドスレッドがいくつかありActivityます。ほとんどは経由AsyncTaskであり、1つは私自身を経由していExecutorServiceます。Serviceこれらをまたはに移動するためにコードをリファクタリングすることに大きな利点があるかどうかを知りたいですIntentService

4

2 に答える 2

3

あなたは活動とサービスの定義について混乱しているようです。明確にするために:

  • アクティビティは、アクティビティライフサイクルステートマシンに従って実行されるものです。それぞれのハンドラーのコードは、UIに接続されたイベントループと相互作用します。
  • サービスは、サービスライフサイクルステートマシンに従って実行されるものです。それぞれのライフサイクルハンドラーのコードは、インテントなどを処理する操作を実行しますが、UIを介してユーザーと対話することはありません。

ただし、これらは両方とも、アプリケーションの「メインスレッド」で実行されます。それ自体では、アクティビティまたはサービス(またはブロードキャストレシーバー、コンテンツプロバイダーなど)はスレッドではありません。ドキュメントを見ると、ActivityクラスとServiceクラスが実際にはスレッドを形成していないことがわかります。代わりに、これらはAndroidフレームワーク内で実行されるフックであり、フレームワークは適切なタイミングでアプリの「メイン」スレッドでそれらを呼び出します。

アプリ用に個別のスレッドを作成するか、を使用しAsyncTask作業を行い、UIスレッドに簡単に公開できます(サービスではそれほど簡単には実現できません)。

于 2012-06-10T17:45:28.587 に答える