안드로이드 코 틀린 - 룸의 기능을 일시 중단

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 디스패처에 현탁 함수 호출을 강제로 성능면에서 낭비 모두입니다.

추천

출처http://43.154.161.224:23101/article/api/json?id=13053&siteId=1