전체 글 426

LiveData와 StateFlow의 차이

LiveData에는 Post 및 Set의 2가지 방출 기능이 있습니다. 기사 중 하나에 따르면 LiveData의 단점은 두 가지 값 방출 기능, 즉 setValue 및 postValue가 있다는 것입니다. setValue — 메인 스레드에서만 사용할 수 있습니다. 그렇지 않으면 충돌합니다. postValue — 모든 스레드에서 사용할 수 있습니다. 그러나 메인 스레드가 사용 중이면 값이 떨어지고(잃어버린) 가장 최근에 게시된 값만 사용됩니다. StateFlow에는 1개의 방출 기능만 있습니다. 세트도 포스트도 없습니다. 설정할 stateFlow.value일 뿐입니다. 따라서 배경인지 전경인지(메인 스레드) 걱정할 필요가 없습니다. 주 스레드가 사용 중일 때 stateFlow가 어떻게 동작하는지 궁금합니다..

코틀린 코딩컨벤션 정리

클래스 레이아웃 일반적으로 클래스의 내용은 다음의 순서로 정렬된다. 1. Property declartions and initializer block 2. Secondary constructors 3. Method declarations 4. Companion object 관련된 것들을 한데 모아 클래스를 읽는 사람이 위에서 아래로 무슨 일이 일어나고 있는지 로직을 따라갈 수 있도록 해라. 중첩 클래스들이 외부에서 사용되도록 의도되었고 클래스 내부에서 참조되지 않는다면 companion object 다음의 마지막에 위치시켜라. 콜론 아래와 같은 경우에 콜론 앞에 공백을 넣어라 - 타입과 슈퍼 타입을 분리할 때 - 동일한 클래스의 다른 생성자 또는 슈퍼 클래스의 생성자에게 위임할 때 - object 키워드..

코틀린 mapTo

inline fun Array.mapTo( destination: C, transform: (T) -> R ): C collection 프레임워크 사용 시 각 element들을 변형을 거쳐서 다른 collection에 쉽게 복사할 수 있는 함수입니다. ex) String형 List에 있는 데이터들을 Int형 List로 옮기고 싶은 경우 var list = arrayOf("1", "2", "3", "4") var p = ArrayList() list.mapTo(p, { s -> s.toInt()n } ) println(p.toString()) 결과 [1, 2, 3, 4] 나의 경우는 새로운 리스트를 temp리스트를 생성해서 조건에 맞는 리스트를 넣어주는 것이었다. viewModel.listParticipa..

코딩/코드리뷰 2021.11.18