我有一个用 Kotlin 编写的个人项目,并且养成了非常慷慨地使用的习惯withContext(...)。我倾向于withContext(Dispatchers.IO)在调用任何可能与 I/O 相关的内容时使用。
例如:
suspend fun getSomethingFromDatabase(db: AppDatabase) = withContext(Dispatchers.IO) {
return // ...
}
suspend fun doSomethingWithDatabaseItem(db: AppDatabase) {
val item = withContext(Dispatchers.IO) {
getSomethingFromDatabase(db)
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
withContext(Dispatchers.IO)您可以在第二个函数中看到冗余。我在这里格外谨慎,因为我可能不知道/记得是否getSomethingFromDatabase切换到适当的上下文。这会影响性能吗?这很糟糕吗?惯用的处理方式是什么Dispatchers?
注意:我知道以这种方式在不同的上下文之间切换是完全可以的,但是这个问题具体是关于使用相同的上下文。