Как не завершить Android IntentService, когда onHandleIntent () завершается? - PullRequest
3 голосов
/ 14 сентября 2011

Я запускаю IntentService. В onHandleIntent () я делаю HTTP-запрос с обработчиком, который вызывается, когда запрос завершается, например:

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

onHandleIntent () завершается немедленно, прежде чем возвращается HTTP-запрос. Запрос возвращается, но поток ServiceIntent уже был уничтожен, а doStuff () никогда не запускается.

Каков наилучший способ обработки такой структуры обработчика обратного вызова с помощью ServiceIntent?

1 Ответ

4 голосов
/ 14 сентября 2011

К сожалению, нет.IntentService предназначен для постановки в очередь синхронных блоков работы, завершения их в другом потоке и завершения.Вам придется создать свой собственный сервис.Вы можете взглянуть на исходный код для IntentService и начать оттуда.Самое главное, вы захотите позвонить stopSelf после завершения обратного вызова, а не после onHandleIntent.

...