IntentService имеет свой собственный поток, начиная другой поток из handleIntent, сервис, считающийся вживую или завершенным сервисом, и не имеет значения, какой другой поток активен или нет? , и как только IntentService завершит свою работу, возможно ли вернуться в основной поток и вызвать другой поток, но начало другого потока может быть из основного потока, а не из активности, поскольку служба может завершить свое задание во время любого активного Мероприятия.Как IntentService выполняет свою работу. можно ли запустить другой поток из потока пользовательского интерфейса, но не от активности?
ответ
IntentService имеет свой собственный поток, начиная еще один поток от handleIntent
Никогда не делайте этого. Как только метод IntentService
onHandleIntent()
вернется, служба будет уничтожена, и процесс, вероятно, также будет убит. Android не имеет представления о том, какие темы вы начали, так что для всех он знает, что ваш процесс простаивает и тратит ресурсы.
Если вам нужно «запустить» что-то еще, когда IntentService
делается, используйте startActivity()
, startService()
или sendBroadcast()
(в зависимости от случая). Опять же, Android не знает о ваших потоках.
Если вам нужна семантика вызова процедуры (например, запустить службу, выполнить ее задачу, затем вернуть управление вызывающему абоненту), IntentService
- это не тот инструмент. Используйте связанный сервис (или связанный сервис AIDL, если вам нужно пересечь границы процесса).
- 1. Выполняет ли асинхронные запросы влияние производительности потока пользовательского интерфейса
- 2. Как определить поток потока пользовательского интерфейса
- 3. Как запустить код из потока пользовательского интерфейса в C#
- 4. Как отправить сообщение из отдельного потока в поток пользовательского интерфейса?
- 5. Как отправить события из потока в другой
- 6. Почему Serialize не выполняет свою работу?
- 7. Можно ли позвонить Волейбулю из потока, отличного от основного потока пользовательского интерфейса?
- 8. Android onHandleIntent IntentService ждет пользовательского интерфейса Thread
- 9. Android: Как запустить фоновый поток и поток пользовательского интерфейса одновременно?
- 10. Выполняет ли Android-загрузчик свою работу в отдельном потоке?
- 11. Выполнение пакета SSIS успешно завершено, но не выполняет свою работу
- 12. Isset все еще не выполняет свою работу
- 13. Как у меня есть 1 поток пользовательского интерфейса для другого потока пользовательского интерфейса
- 14. Синхронизация потока пользовательского интерфейса с методом, вызванным другой нитью
- 15. Контроллер AngularJS не выполняет свою работу
- 16. Запустить IntentService из Activity и обновить Activity, когда IntentService закончен
- 17. Когда/как MemoryCache выполняет свою работу?
- 18. WPF ждут ключи от потока пользовательского интерфейса
- 19. Apache WordUtils.capitalize не выполняет свою работу
- 20. Требуется ли вызвать CameraSource.stop() из потока пользовательского интерфейса?
- 21. Блокирование потока пользовательского интерфейса при ожидании сетевой активности
- 22. Как заблокировать поток пользовательского интерфейса из другого потока или заставить форму запускать в потоке пользовательского интерфейса
- 23. onLocationChanged callback делается на какой поток? Основной поток пользовательского интерфейса?
- 24. Почему цикл не выполняет свою работу?
- 25. Проблема «BOT» Server, не выполняет свою работу
- 26. Возможно ли запустить работу quartz.net в потоке пользовательского интерфейса?
- 27. Получение текущей активности из потока
- 28. Как работает процесс обновления потока пользовательского интерфейса из рабочего потока?
- 29. Запуск активности android из потока
- 30. Выполнение потока обработчика перед потоком пользовательского интерфейса
Спасибо, я получил первую часть, , как только IntentService завершит работу, получая соответствующие данные, мне нужно запустить другой поток, точка - это второй поток, который мне нужно начинать с основного потока, но я не знаю Не хочу, чтобы получателем для завершения IntentService была активность, так как завершение IntentService могло быть во время любой активной активности, я хочу smth, глобальное место, которое может обрабатывать завершение IntentService, где я мог бы начать другой поток. –
Не делайте этого. Вы никогда не должны создавать потоки из «IntentService». Я не могу здесь помочь, так как вы просто делаете такие заявления, как «второй поток, который мне нужно начинать с основного потока», без объяснения причин. –
Хорошо, что я использую библиотеку, которая реализует механизм загрузки, но перед началом второй мне нужно получить ресурсы, и как только я получу результат start 2_n thread (который обрабатывает механизм загрузки) и учтите, что первый поток должен продолжить это работа, даже я оставляю деятельность. поэтому я хотел использовать IntentService , любые советы могут быть полезны, спасибо –