В настоящее время я разрабатываю постоянную библиотеку для Android в Котлине.В моем коде я должен обрабатывать файловые операции (чтение, запись и т. Д.), Которые я хотел бы выполнять асинхронно для повышения производительности.Я думал, что смогу сделать это с новой функцией сопрограммы Kotlin 1.3
GlobalScope.launch {
writeFileAsync(file, bytes)
}
private suspend fun writeFileAsync(file: File, bytes: ByteArray) {
try {
file.writeBytes(bytes)
} catch (e: Exception) {
throw PersistenceException(e)
}
}
Допустим, я нахожусь в ситуации, когда пользователь изменил объект, который теперь сохраняется с кодом выше, и он закрываетприложение до сопрограмма закончена.Конечно, я не хочу останавливать сопрограмму из-за потери данных, но это нормально, или я пропускаю сопрограмму?
Я также не уверен, как заблокировать все другие операции (возможно, из других потоковили обрабатывает) в этот файл во время работы сопрограммы, поэтому, если у вас есть идеи для этого, пожалуйста, дайте мне знать.