ebeninki :
나는에서 샘플을 찾고 있었다 https://github.com/android/architecture-samples/tree/dev-dagger/app/src/main/java/com/example/android/architecture/blueprints/todoapp/data/source / 지역 의 dev-dagger
지점과에서 TasksLocalDataSource.kt
그들은 다음과 같은 방법을 파일 :
override suspend fun getTasks(): Result<List<Task>> = withContext(ioDispatcher) {
return@withContext try {
Success(tasksDao.getTasks())
} catch (e: Exception) {
Error(e)
}
}
사용하여 withContext
디스패처로 IO와 함께, 그들은 코 루틴은 IO 스레드에서 실행하려는. 그러나 객실 요청 tasksDao.getTasks()
방법 내부는이 기능을 중지합니다. 그리고에서 코드 랩에 https://codelabs.developers.google.com/codelabs/kotlin-coroutines/#8 , 그들은 그 말 Room
(여기서는 요청을 실행하는 처리 소요 getTasks()
)이 기능을 정지가되면 백그라운드 스레드에서를하는 여기 경우입니다. 따라서,도를 사용하여 너무 많이하지 withContext(ioDispatcher)
? 난 안 다음과 같은 방법으로 같은 이상도 방법을 다시 쓸 수 있을까요? :
override suspend fun getTasks(): Result<List<Task>> {
return Success(tasksDao.getTasks())
}
마르코 Topolnik :
네, 당신이 작성해야 정확히 무엇이다. 여전히 그들은 현탁 룸 통화를 도입하기 전에 시간에서, 워드 프로세서에서 기존의 많은있을 나타납니다. 그것은 가독성과 IO 디스패처에 현탁 함수 호출을 강제로 성능면에서 낭비 모두입니다.