2011-10-18 7 views
1

私のアクティビティでは多くの非同期タスクがあり、非同期にするたびにAsyncTaskをオーバーライドする必要があります。AndroidバインドサービスとAsyncTaskの比較

すべてのAsyncTaskをBoundService + AIDLに置き換えることができますか、AsyncTaskでのみ行う必要がありますか?

答えて

2

サービスはバックグラウンドで実行されますが、メインスレッド(AKA。UIスレッド)で実行されても、ANR例外が発生します。 API hereに従って:Serviceクラスについて

ほとんどの混乱は、実際にはないものを中心に展開:

  • Aサービスは、独立したプロセスではありません。 Serviceオブジェクト自体は、それ自身のプロセスで実行されていることを意味するものではありません。特に明記されていないかぎり、それが含まれているアプリケーションと同じプロセスで実行されます。
  • サービスはスレッドではありません。これは、(アプリケーションが応答しないというエラーを避けるために)メインスレッドの処理を行う手段ではありません。

サービスを使用できますが、別のスレッドで何かを実行したい場合は、サービスまたはアクティビティでスレッドロジックを実装する必要があります。

1

サービスはデーモンで、AsynkTaskはバックグラウンドスレッドです

関連する問題