2012-03-12 9 views
2

ちょっと、私は複数のhttpリクエストを行い、アンドロイドでこれを実行する最善の方法を考えています。現在、スレッドでIntentServiceを使用していますが、スレッド処理が完了する前にonhandleintentが戻ってくるため、これはうまく動作しません。私は定期的なサービスに切り替える必要があり、そこに自分のスレッドを開始するか、asyncTaskをもっと承認する必要がありますか? ありがとう複数のhttpリクエストをandroidで作成するには

+0

サービスを開始していますか? –

+0

現在アクティビティから開始し、IntentServiceを呼び出しています – Tyler

答えて

0

スレッドを扱うときはいつでも、同期を処理する必要があります。たとえば、onHandleIntent()が呼び出されると、HTTPリクエストスレッドと同期して完了するまで待つ必要があるかもしれません。

これを多く実行する予定がある場合は、ThreadPoolExecutorのようなものを見て、スレッドを作成して解体するという苦労を少しでも省くことができます。移動する前に終了を待つ場合は、スレッドを同期させる必要があります。 Androidには、実装するのがかなり簡単な抽象化を含むさまざまな方法があります。

+0

intentServiceが呼び出されるたびに6スレッドを開始しています。各スレッドは、別のデータを戻すために異なるxmlでhttp要求を行う責任があります。それから私は、データを取って、それをローカルのsqliteデータベースに挿入しています。私のコードはfolowingのようなものです: http://pastebin.com/fGqXeEbS – Tyler

+0

ThreadPoolExecutor(https://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.html)を見てみることをお勧めします。あなたがこれを一貫してやるならば。いずれにせよ、これは実際のサービスに適しているように聞こえる。 – NuSkooler

0

新しいスレッドを(直接的または間接的に)既に開始している場合は、IntentServiceの代わりにServiceを使用する必要があります。 IntentServiceの全体のポイントは、あなたのスレッドを処理するためのものです。

関連する問題