Ответ
Для подсчета от 1 до 1 млн в Android лучше использовать Coroutine или Flow для асинхронной обработки без блокировки UI:
// Использование Coroutine
viewModelScope.launch {
(1..1_000_000).forEach { number ->
// Обработка числа
delay(1) // Для избежания блокировки UI
}
}
// Использование Flow
fun countNumbers(): Flow<Int> = flow {
(1..1_000_000).forEach { emit(it) }
}
viewModelScope.launch {
countNumbers().collect { number ->
// Обработка числа
}
}
Ключевые моменты:
- Не выполняйте в UI-потоке
- Используйте
delay()для уступки потока - Для больших данных предпочтительнее
Flow