Compose mvi 패턴중 가장 많이 쓰이는 두가지 flow 1. StateFlow - 구독자가 구독하기 전까지는 emit 해도 이전 값들은 버려지고 최신상태 하나만 가지고 있음.- 구독자가 구독 하는 순간 현재 가지고 있는 최신 값을 방출. (ui 상태관리 처리에 적합)2. SharedFlow- 구독자가 구독 하건말건 내멋대로 방출- 구독자가 구독한 이후 시점부터 방출되는 데이터를 받을 수 있음 (event 처리에 적함)
정/실수 타입의 파라미터를 받을 때 특정한 범위 내에서만 받고싶을때.. 보통 아래와 같이 하는데, /** * @param testValue 0.0f ~ 1.0f */ fun testRangeFloat( testValue: Float ) { if ((testValue 1.0f)) return // do something.. } @FloatRange or @IntRange annotation 을 활용해 컴파일 타임에서 범위를 제한 할 수 이쓰요 /** * @param testValue 0.0f ~ 1.0f */ fun testRangeFloat( @FloatRange(fro..
fun Context.copyClipBoard(title: String = "", text: String) { runCatching { val clipBoard = (getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager) val clip = ClipData.newPlainText(title, text) clipBoard.setPrimaryClip(clip) }.onSuccess { // 33 부터는 클립보드 매니저에서 복사 시, 시스템에서 토스트 띄워줘서 중복노출됨. if (Build.VERSION.SDK_INT
명사여야 함: DoneButton() 동사 또는 동사구이면 안 됨: DrawTextField() 명사화된 전치사이면 안 됨: TextFieldWithLink() 형용사이면 안 됨: Bright() 부사이면 안 됨: Outside() 명사 앞에는 명사를 설명하는 형용사를 붙일 수도 있음: RoundIcon() https://github.com/androidx/androidx/blob/androidx-main/compose/docs/compose-api-guidelines.md#naming-unit-composable-functions-as-entities
앱을 background 로 내린 뒤, 오랜시간 방치 후 재실행하면 저장해놓은 bundle (arguments, intent...) 이외에는 전부 날아간다. Fragment fragment manager 의 fragment 기록들도 남아있어서. 재실행시 fragment manager 를 기반으로 fragment 를 다시 그리는데, 이때 fragment 의 모든 멤버변수는 다 날아가고 onCreate() 부터 다시 실행됨 이때 화면을 그리는데 필수적인 데이터들을 member var 로 선언해 놓으면 전부 날아가기 때문에 (fragment instance 를 새로 만드는것과 동일) argument 에 저장해 놓고, onCreate 에서 argument 에서 불러와서 다시 초기화 해주는 것이 아니면, frag..
Custom view 등을 만들때, 유의해야 할 view life cycle 기본적으로, 내 크기 측정(measure) > 내 위치 측정(layout) > 그림(draw) 순으로 흘러감 measure() , onMeasure() 내 크기를 측정할 때, 대부분 내가 포함하고 있는 자식의 크기를 먼저 알아야 내 크기를 알 수 있는 경우가 많기 때문에, 내 자식 뷰들을 순회하면서 크기를 받아서 최종적으로 내 크기를 그림 이 단계가 모두 끝나면 onMeasure() 가 호출되고, onMeasure() 에서 얻어온 width, height 로 크기를 가늠 할 수 있음. 이 과정에서 추측할 수 있듯이, layout 구조를 그릴 때, 뷰 뎊스가 깊어지면 깊어질 수록, measure() 시간이 오래걸림. layout(..
깃헙 페이지에 키 등록 준비 Github > My Page > Settings > SSH and GPC Keys ssh key 생성 터미널을 열어 아래 명령어 실행 ssh-keygen -t rsa -b 4096 -C "이메일 주소" 생성된 파일 확인 cd ~/.ssh ls id_rsa : 개인 키 id_rsa.pub : 공개 키 Github page 에 공개 키 등록 id_rsa.pub 내용 전체를 처음에 열어놓았던 github page 에 등록하면 완료
Dagger dependency 를 2.28.1-alpha3 에서 2.31-alpha 로 변경 error: cannot find symbol @dagger.hilt.InstallIn(value = {ApplicationComponent.class}) 에러 발생 ------ solved ApplicationComponent -> deprecated in 2.30 SingletonComponent 로 대체 @Module @InstallIn(SingletonComponent::class) object DataSourceModule { //..... }
- Total
- Today
- Yesterday
- Phaser
- node.js
- Swift
- nodejs
- C언어
- 서버
- 손석희
- Android
- xcode
- 리눅스
- 노드
- Node
- GIT
- php
- 점유율
- 스위프트
- 깃헙
- Asterisk
- IOS
- git hub
- 안드로이드
- 배열
- 앵커브리핑
- C
- CentOS
- BBC 가쉽
- linux
- 뉴스룸
- Kotlin
- mysql
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |