일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |
- Observer Pattern
- Singleton
- builderPattern
- PrototypePattern
- 함수형프로그래밍
- 빌터패턴
- Abstract Factory
- Design Pattern
- 옵저버 패턴
- Kotlin
- 디자인패턴 #
- 추상팩토리패턴
- ㅋㅁ
- ㅓ
- designPattern
- 코틀린
- compose
- r
- android designsystem
- 프로토타입 패턴
- Functional Programming
- El
- 싱글톤
- F
- 디자인패턴
- factory method
- 추상 팩토리
- material3
- 안드로이드 디자인시스템
- 팩토리 메소드
- Today
- Total
목록분류 전체보기 (333)
오늘도 더 나은 코드를 작성하였습니까?

PagingSource 정의 하기 1. 데이터 소스를 식별 - PagingSource - key는 데이터 로드에 사용하는 식별자(index) value는 로드되는 데이터의 타입. 2. load() 데이터 소스에서 페이징된 데이터를 검색하는 방법을 정의하는 메소드 - PagingSource는 서버에서 데이터를 가져올수 있는 backend, 서버에 전송할 인자 query를 생성자 매개변수로 받는다. - 첫 번째 호출은 Pager 에 의해 제공되는 initialKey 를 사용하여 load한다. LoadParams 객체에는 실행할 로드 작업에 관한 정보가 포함됩니다. 로드할 키와 로드할 항목 개수가 포함되어 있다. LoadResult 객체에는 로드 작업의 결과가 포함됩니다. LoadResult는 load() 호..

얻을수 있는 점 1. 페이징된 데이터를 메모리에 캐싱 -> 시스템 자원을 효율적으로 사용. 2. 데이터 요청의 중복을 제거 기능 -> 네트워크 대역폭과 자원을 효율적 사용. 3. 로드된 데이터를 끝까지 스크롤할때 Recyclerview 자동으로 데이터 요청. 4. Kotlin coroutine / Flow뿐만 아니라 LiveData 및 RxJava를 최고 수준으로 지원 5. 새로고침 / 재시도 등을 포함한 오류처리 기본지원. 아키텍처 - repositort - viewModel - ul repository PagingSource - PagingSource 객체는 데이터 소스와 이 소스에서 데이터를 검색하는 방법을 정의 - PagingSource 객체는 네트워크 소스 및 로컬 데이터베이스를 포함한 단일 소..

map - 기존 코틀린 collection 확장함수인 map 동일하다. - flow 값을 변환 시켜 보낸다. - 람다로 변환함수만 넘기면 알아서 전부 emit된다. suspend fun main() { val intFlow = (1..10).asFlow().map { it*it } intFlow.collect { int -> println(int) } } transFrom - map과 비슷하지만 단순 값의 변환 보다는 타입을 명식적으로 기재해 타입을 변환할때 사용한다. - 타입을 변환후 emit()사용하여 보낸다. suspend fun main() { val intFlow = (1..10).asFlow().transform { num -> val str = num.toString()+"번" emit(st..

Take - flow에서 특정 개수만 받을경우 사용한다. suspend fun main() { val alphabetFlow = ('a'..'z').asFlow().take(4) alphabetFlow.collect { alphabet -> println(alphabet) } } TakeWhile - flow의 첫번째 보내는 값이 조건을 만족하면 내보낸다. 즉, 조건에 맞는 첫번쨰 값을 내보내는것이 아니라, 첫번째 값이고 조건에 맞아야 한다. suspend fun main() { val intFlow = (1..10).asFlow().takeWhile{ num -> num.equals(1) } intFlow.collect { int -> println(int) } } Buffer( 생산자 소비자 한쪽/양..