Ваш код написан на основе экспериментального сопрограммного API, поэтому позвольте мне сначала обновить его до Kotlin 1.3 и исправить некоторые очевидные ошибки:
class MainActivity : Activity(), CoroutineScope {
override val coroutineContext = Dispatchers.Main + SupervisorJob()
private val moviesList: MutableList<Movie> = mutableListOf()
fun getMovies() {
launch {
val result = withContext(Dispatchers.IO) { getResponseJSON() }
moviesList += Gson().fromJson(result, MovieDBResponse::class.java).results
longToast("Size after fetching: ${moviesList.size}")
}
longToast("Immediate size: ${moviesList.size}")
}
override fun onDestroy() {
super.onDestroy()
coroutineContext[Job]!!.cancel()
}
}
Теперь, глядя на ваш код, это то, что яожидайте, что это сделает:
launch
параллельная сопрограмма, которая в конечном итоге извлечет некоторые данные JSON из сети - Запрос на отображение тоста "Немедленный размер"
- Получены результаты JSON
- Заполните список фильмов
- Запрос на отображение тоста "Размер после извлечения"
Точная информация о том, когда вы видите тост наЭкран может отличаться в зависимости от политики Android и скорости загрузки.