3

IntentServiceを開始します。onHandleIntent()で、次のように、リクエストの完了時に呼び出されるハンドラーを使用してHTTPリクエストを作成します。

public function onHandleIntent(){
    makeRequest("http://somehthing.com", new Handler(){
        doStuff();
    });
}

onHandleIntent()は、HTTPリクエストが返される直前に終了します。リクエストは返されますが、ServiceIntentスレッドはすでに破棄されており、doStuff()は実行されません。

ServiceIntentを使用してこのようなコールバックハンドラ構造を処理するための最良の方法は何ですか?

4

1 に答える 1

4

残念ながら、あなたはそうしません。IntentService同期作業ブロックをキューに入れ、別のスレッドでそれらを完了してから終了することを意味します。独自のサービスを作成する必要があります。のソースコードを見て、IntentServiceそこから始めることができます。stopSelf最も重要なことは、コールバックが完了した後ではなく、後に呼び出すことですonHandleIntent

于 2011-09-14T00:58:10.063 に答える