Я довольно новичок в сопрограммах, поэтому я решил, что пришло время больше узнать о них.
Идея: я беру один Image
из камеры моего приложения, а затем хочу обработать это Image
до Bitmap
.Дело в том, что для вычисления toBitmap()
требуется некоторое время, поэтому я решил выполнить его в фоновом потоке следующим образом:
private fun processImage() {
viewModelScope.launch {
withContext(dispatcherProvider.background) {
val bitmap = ImageUtils.toBitmap(imageBeingProcessed)
...
}
}
}
Это привело к ошибке: "java.lang.IllegalStateException: изображение ужезакрыто".Я предполагаю, что GC очистил экземпляр объекта Image
, и именно поэтому я получил эту проблему.Но .. В то же время, если я выполню такую же функцию, как это:
private fun processImage() {
val bitmap = ImageUtils.toBitmap(imageBeingProcessed)
viewModelScope.launch {
withContext(dispatcherProvider.background) {
...
}
}
}
Тогда все в порядке.Это почему?Я неправильно решаю эту проблему?