2011-08-29 10 views
1

サービスを開始するListActivityがあります。このサービスでは、最大800件の連絡先のデータベースクエリを実行するスレッドを開始しましたが、これは遅くなったり、UIをハングアップすることがあります。代わりにAsyncTaskを使用する必要がありますか?これを処理する適切な方法は何ですか?Androidサービス、スレッド、UI

+0

追加するだけで、アクティビティビューが更新されたときに少し遅れるのが普通ですか? – Maurice

答えて

1

通常、サービスはUIスレッドで実行されています。 しかし、サービスでスレッドを使用しているということは、作業がバックグラウンドで実行されていることを意味するため、UIスレッドをブロックする可能性はありません。

私はあなたが更新UI用のスレッドからいくつかのコードを書き、UIがブロックされている可能性があると思います。

サービスを開始してスレッドを使用して更新する代わりに、AsyncTaskを使用することができます。これは、asynctaskがバックグラウンドスレッドと同じことをするためです。

+0

現在、私は、AsyncTaskの制限が20なので、作成されたスレッドを絞っていますが、ヘッドアップに感謝します! – Maurice

0

あなたのリストの連絡先を増分ロードしてみてください。あまりにも多くのデータを照会すると、もちろんスレッドが遅くなります。

関連する問題