Android(60)
-
[ERROR/EXCEPTION] java.lang.IllegalStateException: onAttach called multiple times with different Context! Hilt Fragments should not be retained.
java.lang.IllegalStateException: onAttach called multiple times with different Context! Hilt Fragments should not be retained. at dagger.hilt.internal.Preconditions.checkState(Preconditions.java:83) at com.example.kotlinstudy.pesentation.tobe.launch.my.Hilt_MyFragment.onAttach(Hilt_MyFragment.java:58) Note: Do not use the instance multiple times. If you consume this instance in onCreate on a par..
2022.04.08 -
Compose 부모 영역 안에 꽉 채우기
Item마다 특정형태가 반복되는 리스트를 만들기 위해서 Row영역을 잡고 그 안에 Column영역과 Icon 영역을 잡았다.Column영역은 두 개의 Text가 있다.처음에 Text 영역이 짧은 경우, Text 두 개와 Column, Icon 모두 fillMaxWidth()를 해도 무방했으나(기억이 잘못됐나 Column까지 fillMaxWidth()이면 Icon이 사라지는 것으로 보아 Column은 IntrinsicSize.MAX를 적용했던거 같기도..), Text 영역이 길어지니 Icon이 사라지는 문제가 발생했다.이 경우에는 fillMaxWidth()는 최상단 composable에만 적용하고, Icon은 최소 너비를 갖도록 설정, Text 두 개를 가진 Column 영역은 너비 설정없이 weight를..
2022.04.07 -
Compose Modifier 가로/세로
Modifier에서 제공되는 가로/세로를 설정 - fillMaxWidth/Height(fraction) : 부모의 크기와 상관없이 전체 영역을 잡음, fraction은 차지할 비율 - Width/Height(dp) : dp를 설정해 직접 크기 설정, 여기서 Intrinsic이라는 값을 줄 수도 있음 Intrinsic이란 부모는 자식을 한번만 measure 할 수 있기 때문에 자식의 값으로 가로/세로를 결정하기 위한 값 Intrinsic.MAX는 자식의 가로/세로 중 가장 큰 값으로 설정 Intrinsic.MIN은 자식의 가로/세로 중 가장 작은 값으로 설정 부모의 Height 설정없이 자식이 fillMaxHeight를 설정한 경우 부모가 Intrinsic.MIN 설정 후 자식이 fillMaxHeight를..
2022.04.07 -
Compose Column & Row
Column : composable을 세로로 배치 Row : composable을 가로로 배치 각 scope은 Modifier.Alignment에서 제약이 발생 ColumnScope은 composable이 세로로 배치되므로, horizontal align만 조정 가능 RowScope은 composable이 가로로 배치되므로, vertical align만 조정 가능 composable을 겹치게 배치하고 싶다면 Column & Row를 사용하지 않고, 바운더리를 지정할 때 Box로 바꿔주면 됨 @OptIn(ExperimentalPagerApi::class) @Composable fun prodHome(viewModel: ProdViewModel) { val prodListState by viewModel.p..
2022.04.07 -
Kotlin Flow
flow : coroutine에서 여러 데이터를 순차적으로 내보낼 수 있는 데이터 스트림(지속적으로 데이터를 발행) 형식 * suspend function은 하나의 데이터만 반환 가능 cold : collect() 호출 없이는 데이터 방출하지 않음 cancellation : 자체 취소는 불가능하지만, coroutine을 취소하면 자동으로 됨 구성요소 Producer : 데이터를 생산해 stream에 추가 비동기적 실행 가능 해당 포지션은 UI에서도 가능함(ex> user input events) Intermediary : 데이터 혹은 stream 자체를 가공 Consumer : stream의 데이터를 소비 Producer - Flow builder flow{} : emit()을 호출하여 수동적으로 flo..
2022.03.25 -
Kotlin Coroutine
coroutine : 동시성 설계 패턴 coroutine 특징 경량화 : 하나의 스레드에서 쪼개서 실행이 되므로 가볍다 memory leak 최소화 : scope 내에서 구조화된 동시성을 제공한다 내장된 cancellation 지원 : scope이 사라지면 자동으로 취소된다 Jetpack 통합 : 다수의 Jetpack 라이브러리에서 코루틴을 지원한다 coroutine scope : 코루틴 실행 범위 GlobalScope : 프로그램 전반에 걸쳐 백그라운드에서 동작하는 기본 정의 코루틴 스콥 coroutine context : 코루틴을 어떻게 처리할지에 대한 정보의 집합으로, 주요 요소는 Dispatcher와 Job이 있음 Dispatchers.IO : 네트워크 처리, db, 파일 처리 등에 최적화된 백그..
2022.03.24