일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Abstract Factory
- 옵저버 패턴
- designPattern
- a
- 싱글톤
- 함수형프로그래밍
- 프로토타입 패턴
- Observer Pattern
- PrototypePattern
- F
- 디자인패턴 #
- Singleton
- 추상팩토리패턴
- builderPattern
- r
- 디자인패턴
- 빌터패턴
- El
- factory method
- Kotlin
- ㅋㅁ
- ㅓ
- Functional Programming
- 팩토리 메소드
- 코틀린
- Design Pattern
- 추상 팩토리
- Today
- Total
목록Android Jetpack Architecture (70)
오늘도 더 나은 코드를 작성하였습니까?
race conditions 여러 소스에서 데이터를 로드할 때 로컬 캐시 데이터가 원격 데이터 소스와 동기화되지 않는 경우 1. RemoteMediator initialize() 메서드가 LAUNCH_INITIAL_REFRESH를 반환하면 데이터가 오래된 것을 새 데이터로 교체 2. PREPEND 또는 APPEND 로드 요청은 원격 REFRESH 로드가 성공할 때까지 기다려야 합니다. PREPEND 또는 APPEND 요청이 REFRESH 요청 전에 큐에 추가되었으므로 요청이 실행되는 시점에 이러한 로드 호출에 전달된 PagingState가 만료될 수 있습니다. 데이터가 로컬에 저장되는 방식에 따라 캐시된 데이터 변경으로 인해 데이터가 무효화되거나 새 데이터를 가져오는 경우 앱이 중복 요청을 무시할 수 있..
RemoteMediator의 기본 구현 Pager가 데이터를 모두 사용했거나 기존 데이터가 무효화되었을 때 네트워크에서 더 많은 데이터를 로드하는 것입니다. RemoteMediator는 로드 동작을 정의하기 위해 재정의해야 하는 load() 메서드를 포함합니다. 일반적인 RemoteMediator 구현에는 다음 매개변수가 포함됩니다. query 백엔드에서 검색할 데이터를 정의하는 쿼리 문자열 database: 로컬 캐시의 역할을 하는 데이터베이스 networkService: 백엔드 서비스 API 요청 RemoteMediator 구현을 만듭니다. Key 유형과 Value 유형은 동일한 네트워크 데이터 소스의 PagingSource를 정의하는 경우와 동일하다. @OptIn(ExperimentalPagingA..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/HP59X/btrcxJm8DcT/V1jL1r6CK8V488obKKixe1/img.png)
네트워크 연결이 불안정하거나 네트워크에 연결이 되어있지 않은 경우 사용자 앱 사용자 경험 상승. ---> 네트워크와 로컬 데이터베이스에서 동시에 페이징하는 것 데이터 로드 조정하기 페이징 라이브러리는 사용 사례에 맞는 RemoteMediator 구성요소를 제공 RemoteMediator는 앱이 캐시된 데이터()를 모두 사용한 경우 페이징 라이브러리에서 보내는 신호 역할을 합니다. 신호를 사용하여 네트워크에서 추가적으로 데이터를 로드하고 로컬 데이터베이스에 저장합니다. PagingSource는 로컬 데이터베이스에서 데이터를 로드하고 표시할 UI에 제공합니다. RemoteMediator load( ) 구현 - 정지 함수이므로 장기 작업을 안전하게 실행할 수 있습니다. - 네트워크 소스에서 새로운 데이터를 가..
Activity의 onCreate() / fragment onViewCreated() 에서 최종적인 페이징된 반응형 데이터 스트림을 소비한다. PagingDataAdapter 클래스의 인스턴스를 만듭니다. 페이징된 데이터를 표시할 RecyclerView 목록에 PagingDataAdapter 인스턴스를 전달합니다. PagingData 스트림을 확인하고 생성된 각 값을 어댑터의 submitData() 메서드에 전달합니다 val viewModel by viewModels() val pagingAdapter = UserAdapter(UserComparator) val recyclerView = findViewById(R.id.recycler_view) recyclerView.adapter = pagingAda..