Ответ
Для продления жизни BroadcastReceiver можно использовать метод goAsync(), который возвращает PendingResult. Это позволяет передать обработку широковещательного сообщения в фоновый поток, не блокируя главный поток. После завершения обработки нужно вызвать finish() на PendingResult.
Пример:
override fun onReceive(context: Context, intent: Intent) {
val pendingResult = goAsync()
AsyncTask.execute {
// Долгая обработка
pendingResult.finish()
}
}
Важно: не забывайте вызывать finish(), иначе ресивер останется активным, что может привести к утечке памяти. Этот метод особенно полезен для длительных операций (сетевых запросов, работы с БД).