일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ㅓ
- builderPattern
- Singleton
- Observer Pattern
- 함수형프로그래밍
- 코틀린
- Abstract Factory
- 싱글톤
- El
- 프로토타입 패턴
- android designsystem
- 디자인패턴
- 디자인패턴 #
- 추상 팩토리
- 추상팩토리패턴
- material3
- compose
- PrototypePattern
- ㅋㅁ
- 팩토리 메소드
- 빌터패턴
- 옵저버 패턴
- r
- Kotlin
- F
- Design Pattern
- factory method
- 안드로이드 디자인시스템
- Functional Programming
- designPattern
- Today
- Total
목록분류 전체보기 (333)
오늘도 더 나은 코드를 작성하였습니까?
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을 우려하여 이 코드를 복잡하게 만..
단일값을 보내는 flow // plantsListSortOrderCache.getOrAwait()는 flow 반환. private val customSortFlow = flow { emit(plantsListSortOrderCache.getOrAwait()) } // Create a flow that calls a single function private val customSortFlow = plantsListSortOrderCache::getOrAwait.asFlow() getOrAwait를 호출하고 결과를 첫 번째이자 유일한 값으로 내보내는 새 Flow를 만듭니다. ::을 사용하여 결과 Function 객체에서 asFlow를 호출하는 getOrAwait 메서드를 참조하면 됩니다. 두 코드는 모두 동..
Flow는 Sequence 처럼 laze처리되지만 어떻게 비동기 방식이기도 할까요? 예시에서는 기본 스레드나 UI 스레드와 같은 다른 스레드에 있는 관찰자와 데이터베이스 스레드 풀에서 생성된 데이터를 조정해야 합니다. 또한 데이터 변화에 따라 반복적으로 결과를 내보낼 것이므로 이 시나리오는 비동기 시퀀스 패턴에 적합합니다. Flow 용 Room 통합을 작성해야한다고 생각해보자 Room에서 지원되는 suspendQuery로 시작한 경우 다음과 같이 작성할 수 있습니다. // This code is a simplified version of how Room implements flow fun createFlow(query: Query, tables: List): Flow = flow { val changeT..