【发布时间】:2018-11-19 16:10:53
【问题描述】:
目前我正在 Kotlin 中为 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)
}
}
假设我处于这样一种情况,即用户更改了一个对象,该对象现在使用上面的代码持久化,并且他在协程完成之前 关闭了应用程序。当然我不想因为数据丢失而停止协程,但是这里可以吗,还是我泄露了协程?
我也不确定如何在协程运行时阻止对该文件的所有其他操作(可能来自其他线程或进程),所以如果您对此也有想法,请告诉我。
【问题讨论】:
标签: android kotlin kotlinx.coroutines