A BroadcastReceiver
объект действителен только на время вызова onReceive (). Как только ваш код возвращается из этой функции, система считает, что объект завершен и больше не активен. Поэтому имеет смысл просто использовать AsyncTask
или Thread
здесь.
Также из документации :
В частности, вы не можете показывать диалог или привязку к услуге из BroadcastReceiver.
Если этот BroadcastReceiver был запущен с помощью тега <receiver>
, то после возвращения из этой функции объект больше не является живым. Это означает, что вы не должны выполнять какие-либо операции, которые возвращают вам результат асинхронно - в частности, для взаимодействия со службами вы должны использовать startService()
вместо bindService()
. Если вы хотите взаимодействовать с уже запущенной службой, вы можете использовать peekService()
Это означает, что вы можете startService()
из своего широковещательного rcvr передавать данные, необходимые для работы вашей сети, через намерение. Служба выполнит сетевую работу. Если услуга липкая, вы можете использовать peekService()
. Но вы никогда не должны bindService()
вещать rcvr.