Какой метод может продлить жизнь BroadcastReceiver

«Какой метод может продлить жизнь BroadcastReceiver» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для продления жизни BroadcastReceiver можно использовать метод goAsync(), который возвращает PendingResult. Это позволяет передать обработку широковещательного сообщения в фоновый поток, не блокируя главный поток. После завершения обработки нужно вызвать finish() на PendingResult.

Пример:

override fun onReceive(context: Context, intent: Intent) {
    val pendingResult = goAsync()
    AsyncTask.execute {
        // Долгая обработка
        pendingResult.finish()
    }
}

Важно: не забывайте вызывать finish(), иначе ресивер останется активным, что может привести к утечке памяти. Этот метод особенно полезен для длительных операций (сетевых запросов, работы с БД).