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