| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- PrototypePattern
- 디자인패턴
- 싱글톤
- 추상 팩토리
- Singleton
- android designsystem
- define
- material3
- 프로토타입 패턴
- 코틀린
- 추상팩토리패턴
- 옵저버 패턴
- 안드로이드 디자인시스템
- Design Pattern
- Functional Programming
- builderPattern
- Coroutines
- compose
- designPattern
- 함수형프로그래밍
- ㅓ
- Observer Pattern
- 코루틴
- factory method
- ㅋㅁ
- 디자인패턴 #
- Abstract Factory
- 빌터패턴
- Kotlin
- 팩토리 메소드
- Today
- Total
목록전체 글 (339)
오늘도 더 나은 코드를 작성하였습니까?
onClick에서 호출된 핸들러에서 네트워크 호출을 실행하는 로직이 삭제되고 growZone에서 구동됩니다. 그러면 단일 소스 저장소(SSOT)를 만들어 코드 중복을 방지할 수 있습니다. 어떤 코드도 캐시 새로고침 없이 필터를 변경할 수 없습니다. private val growZoneFlow = MutableStateFlow(NoGrowZone) init { clearGrowZoneNumber() growZoneFlow.mapLatest { growZone -> _spinner.value = true if (growZone == NoGrowZone) { plantRepository.tryUpdateRecentPlantsCache() } else { plantRepository.tryUpdateRecent..
Flow의 가장 흥미로운 기능 중 하나는 suspend 함수를 최고 수준으로 지원한다는 점입니다. flow 빌더와 거의 모든 transform은 정지 함수를 호출할 수 있는 suspend 연산자를 노출합니다. 따라서 네트워크 및 데이터베이스 호출에 관한 기본 안전성이 보장될 뿐만 아니라 flow내에서 일반 정지 함수 호출을 사용하여 여러 비동기 작업을 조정할 수도 있습니다. 실제로, 선언적 transform을 명령 코드와 자연스럽게 혼합할 수 있습니다. 예에서 볼 수 있듯이 추가 변환을 적용하지 않고 일반 map 연산자 내부에서 여러 비동기 작업을 조정할 수 있습니다. 많은 사례에서 이 방법을 사용하면 완전한 선언적 접근 방식보다 코드가 훨씬 더 단순해질 수 있습니다. Flow를 시작할 때 suspend..
private val growZoneFlow = MutableStateFlow(NoGrowZone) val plantsUsingFlow: LiveData = growZoneFlow.flatMapLatest { growZone -> if (growZone == NoGrowZone) { plantRepository.plantsFlow } else { plantRepository.getPlantsWithGrowZoneFlow(growZone) } }.asLiveData() private val growZoneFlow = MutableStateFlow(NoGrowZone) 코드는 NoGrowZone의 초깃값을 사용하여 새 MutableStateFlow를 정의합니다. 특별한 종류의 Flow 값 홀더로서, 제공된 ..
Flow는 main-safe functions를 호출해야 된다. 코루틴의 일반적인 main-safe 보장을 유지합니다. Room과 Retrofit에서는 main-safe 안전성이 보장되므로 Flow를 사용한 네트워크 요청이나 데이터베이스 쿼리를 실행하기 위해 다른 조치를 취할 필요가 없습니다. plantService.customPlantSortOrder가 Retrofit 스레드에서 실행됨(Call.enqueue 호출) getPlantsFlow가 Room Executor에서 쿼리를 실행함 applySort가 수집 디스패처(이 경우 Dispatchers.Main)에서 실행됨 Retrofit에서 suspend 함수를 호출하고 Room에서 flow을 사용했다면 main-safe을 우려하여 이 코드를 복잡하게 만..
