Использовал ли onActivityResult

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

Ответ

onActivityResult — устаревший метод для получения результатов из активити. Вместо него рекомендуется использовать Activity Result API (через ActivityResultLauncher), который проще и поддерживает lifecycle.

Пример старого подхода:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
        // Обработка результата
    }
}

Новый подход (предпочтительный):

val launcher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
    if (result.resultCode == RESULT_OK) {
        // Обработка результата
    }
}
launcher.launch(Intent(this, SomeActivity::class.java))

Основные преимущества нового API: type-safe, нет ручных requestCode, автоматическая отмена при уничтожении активити.