일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 디자인패턴 #
- El
- 추상팩토리패턴
- Design Pattern
- factory method
- a
- PrototypePattern
- F
- 추상 팩토리
- 함수형프로그래밍
- designPattern
- Functional Programming
- ㅋㅁ
- 옵저버 패턴
- Abstract Factory
- 빌터패턴
- Singleton
- 싱글톤
- 코틀린
- r
- 프로토타입 패턴
- Observer Pattern
- 디자인패턴
- ㅓ
- 팩토리 메소드
- Kotlin
- builderPattern
- Today
- Total
목록Android Jetpack Architecture/Paging3 (11)
오늘도 더 나은 코드를 작성하였습니까?
Paging 라이브러리를 사용하면 ViewModel에 Flow을 대신 노출할 수 있습니다 PagingData는 로드된 데이터를 래핑하고 Paging 라이브러리가 추가 데이터를 가져올 시기를 결정하는 데 도움을 주는며 동일한 페이지를 두 번 요청하지 않도록 합니다. PagingData를 구성하기 위해 PagingData를 앱의 다른 레이어에 전달하는 데 사용할 API에 따라 Pager 클래스의 여러 빌더 메서드 중 하나를 사용합니다. Kotlin Flow - Pager.flow 사용 LiveData - Pager.liveData 사용 RxJava Flowable - Pager.flowable 사용 RxJava Observable - Pager.observable 사용 Repository /** * Repo..
페이징을 해야하는 이유 - ViewModel은 메모리에 로드된 모든 항목을 items StateFlow에 저장한다, 그런데 데이터가 너무 커지면 성능에 영향을 줄 수 있다는 의미이기에 매우 중요한 문제입니다. - 데이터가 변경되었을 때 List에서 하나 이상 업데이트하는 작업은 List가 클수록 커질수록 비용이 더 많이 생긴다. Paging 라이브러리는 위 문제를 해결하는 동시에 앱에서 점진적으로 데이터를 가져오는(페이지로 나누기) 일관된 API를 제공 Paging 라이브러리의 핵심 구성요소 PagingSource - 특정 페이지 쿼리의 데이터 청크를 로드하는 기본 클래스입니다. - 데이터 레이어의 일부이며 일반적으로 DataSource 클래스에서 노출되고 이후에 ViewModel에서 사용하기 위해 Re..
앱이 목록 상단부터 REFRESH를 하는 경우 RemoteMediator가 prepend 로드 동작을 정의할 필요가 없다. 앱이 네트워크에서 로컬 데이터베이스로 incremental loading 를 지원해야 하는 경우에는 사용자의 스크롤 위치인 anchor 부터 페이지 나누기를 재개하는 기능을 지원해야 합니다. Room의 PagingSource 구현에서 이 작업이 자동으로 처리되지만, Room을 사용하지 않는 경우에는 PagingSource.getRefreshKey()를 재정의하면 됩니다. getRefreshKey()의 구현 예는 PagingSource 정의를 참고
race conditions 여러 소스에서 데이터를 로드할 때 로컬 캐시 데이터가 원격 데이터 소스와 동기화되지 않는 경우 1. RemoteMediator initialize() 메서드가 LAUNCH_INITIAL_REFRESH를 반환하면 데이터가 오래된 것을 새 데이터로 교체 2. PREPEND 또는 APPEND 로드 요청은 원격 REFRESH 로드가 성공할 때까지 기다려야 합니다. PREPEND 또는 APPEND 요청이 REFRESH 요청 전에 큐에 추가되었으므로 요청이 실행되는 시점에 이러한 로드 호출에 전달된 PagingState가 만료될 수 있습니다. 데이터가 로컬에 저장되는 방식에 따라 캐시된 데이터 변경으로 인해 데이터가 무효화되거나 새 데이터를 가져오는 경우 앱이 중복 요청을 무시할 수 있..