작성
·
597
0
검색창에 검색어를 입력하고 페이징 데이터로 불러오는 과정에서
collectLatest가 아닌 collect로 데이터를 수집하면 맨 처음 한번을 제외하고 그 이후에는 검색어를 입력해도 PagingSource 의 load함수가 작동하지 않는 것을 확인했습니다.
collectLatest가 아닌 collect 로 했을때 동작이 정상적으로 안되는 이유가 무엇인가요?
답변 1
0
collect는 flow에서 발행되는 모든 데이터를 순서대로 처리하는데 반해, collectLatest는 flow에 새로운 데이터가 들어오면 기존 suspend 작업을 버리고 새로운 suspend 작업을 수행합니다. 다음 링크를 참조하세요.
paging은 flow 데이터가 시간에 따라 계속 갱신되고 기존 데이터는 무효화되는 구조를 갖고 있으므로 구글은 UI에 expose하는 데이터에 대해서는 collect가 아닌 collectLatest를 쓰도록 권장하고 있습니다.