인프런 커뮤니티 질문&답변

jminie님의 프로필 이미지
jminie

작성한 질문수

냉동코더의 알기 쉬운 Modern Android Development 입문

Practice8B-Retrofit 응답에 Paging 적용하기 (PagingSource)

collectLatest가 아닌 collect로 하면 작동하지 않는 이슈

작성

·

597

0

검색창에 검색어를 입력하고 페이징 데이터로 불러오는 과정에서

collectLatest가 아닌 collect로 데이터를 수집하면 맨 처음 한번을 제외하고 그 이후에는 검색어를 입력해도 PagingSource 의 load함수가 작동하지 않는 것을 확인했습니다.

collectLatest가 아닌 collect 로 했을때 동작이 정상적으로 안되는 이유가 무엇인가요?

답변 1

0

냉동코더님의 프로필 이미지
냉동코더
지식공유자

collect는 flow에서 발행되는 모든 데이터를 순서대로 처리하는데 반해, collectLatest는 flow에 새로운 데이터가 들어오면 기존 suspend 작업을 버리고 새로운 suspend 작업을 수행합니다. 다음 링크를 참조하세요.

https://kotlinworld.com/252

paging은 flow 데이터가 시간에 따라 계속 갱신되고 기존 데이터는 무효화되는 구조를 갖고 있으므로 구글은 UI에 expose하는 데이터에 대해서는 collect가 아닌 collectLatest를 쓰도록 권장하고 있습니다.

https://medium.com/androiddevelopers/fetching-data-and-binding-it-to-the-ui-in-the-mad-skills-series-cea89868b3e1

 

jminie님의 프로필 이미지
jminie

작성한 질문수

질문하기