• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

Practice9 자동 캐시 정리 구현하기에서 질문

22.09.27 17:28 작성 조회수 97

0

ViewModel에서 saveCacheDeleteMdoe 와 getCacheDeleteMode 함수 두 가지를 구현하실 때 왜 하나는 viewModelScope을 사용하시고 하나는 withContext를 사용하신건지 궁금합니다!

답변 2

·

답변을 작성해보세요.

1

jminie님의 프로필

jminie

질문자

2022.09.28

감사합니다!

1

saveCacheDeleteMode 와 getCacheDeleteMode 모두 코루틴 내부에서 동작되어야 하는데요, 차이는 작업의 형태입니다. 코루틴 작업이 여러개 있을 때 saveCacheDeleteMode는 코루틴 순서에 상관없이 파일에 값을 저장하기만 하면 끝인데, getCacheDeleteMode는 파일에 저장된 값을 Flow<Boolean>으로 꺼내온 뒤 Boolean 값의 반환이 반드시 종료된 다음에 코루틴 작업이 실행되어야 합니다. 이 때 전체 Flow 스트림을 구독할 필요가 없으므로 Flow에서 단일 String 값을 가져오도록 first를 붙여준 뒤, 반드시 값을 반환하고 종료되는 코루틴인 withContext 내부에서 실행되도록 한 것입니다.