2

を使用してIntentService、インターネットから に何かをダウンロードしていAndroid appます。私はhttp://loopj.com/android-async-http/ httpClientも使用していasyncます。

私が抱えている問題は、ダウンロードasync呼び出しを起動すると、IntentServiceスレッドが終了し、スレッドが停止httpしているため、クライアントが応答でコールバックできないことServiceです。

私はこのような Handler を使用しましたが、動作しているように見えますが、 loppers について少し迷っています。これは正しいです?このコードをそのまま使用しても安全ですか?

new Handler(getMainLooper()).post(new Runnable() {
        @Override
        public void run() {
           //my downloading code here
        }
}));
4

2 に答える 2

3

インテントサービスはバックグラウンドスレッド自体を提供するため、onHandleIntentメソッドで直接http呼び出しを実行し、ブロードキャストを介してアクティビティと対話する必要があります。

一方、私はloopjを使用したことはありませんが、箱から出して必要なすべての非同期性を提供するように見えます。インテントサービス内で使用する必要がある理由を自問します。アプリをバックグラウンドで実行しているときに実行する必要がある場合は、より古典的なサービス内で使用することをお勧めします。

実装しようとしている回避策は、インテントサービスの性質に反しています。インテントサービスは、インテントの処理後に期限切れになる単純なワーカースレッドです。

于 2012-08-27T15:20:24.627 に答える
0

はい、安全なようです。

非同期呼び出しをダウンロード

別のスレッドで動作します (おそらく)。

于 2012-08-27T12:50:01.327 に答える