2016-07-14 1 views
0

IntentService имеет свой собственный поток, начиная другой поток из handleIntent, сервис, считающийся вживую или завершенным сервисом, и не имеет значения, какой другой поток активен или нет? , и как только IntentService завершит свою работу, возможно ли вернуться в основной поток и вызвать другой поток, но начало другого потока может быть из основного потока, а не из активности, поскольку служба может завершить свое задание во время любого активного Мероприятия.Как IntentService выполняет свою работу. можно ли запустить другой поток из потока пользовательского интерфейса, но не от активности?

ответ

0

IntentService имеет свой собственный поток, начиная еще один поток от handleIntent

Никогда не делайте этого. Как только метод IntentServiceonHandleIntent() вернется, служба будет уничтожена, и процесс, вероятно, также будет убит. Android не имеет представления о том, какие темы вы начали, так что для всех он знает, что ваш процесс простаивает и тратит ресурсы.

Если вам нужно «запустить» что-то еще, когда IntentService делается, используйте startActivity(), startService() или sendBroadcast() (в зависимости от случая). Опять же, Android не знает о ваших потоках.

Если вам нужна семантика вызова процедуры (например, запустить службу, выполнить ее задачу, затем вернуть управление вызывающему абоненту), IntentService - это не тот инструмент. Используйте связанный сервис (или связанный сервис AIDL, если вам нужно пересечь границы процесса).

+0

Спасибо, я получил первую часть, , как только IntentService завершит работу, получая соответствующие данные, мне нужно запустить другой поток, точка - это второй поток, который мне нужно начинать с основного потока, но я не знаю Не хочу, чтобы получателем для завершения IntentService была активность, так как завершение IntentService могло быть во время любой активной активности, я хочу smth, глобальное место, которое может обрабатывать завершение IntentService, где я мог бы начать другой поток. –

+0

Не делайте этого. Вы никогда не должны создавать потоки из «IntentService». Я не могу здесь помочь, так как вы просто делаете такие заявления, как «второй поток, который мне нужно начинать с основного потока», без объяснения причин. –

+0

Хорошо, что я использую библиотеку, которая реализует механизм загрузки, но перед началом второй мне нужно получить ресурсы, и как только я получу результат start 2_n thread (который обрабатывает механизм загрузки) и учтите, что первый поток должен продолжить это работа, даже я оставляю деятельность. поэтому я хотел использовать IntentService , любые советы могут быть полезны, спасибо –

Смежные вопросы