android-kotlin 21

Kotlin StateFlow

StateFlow 는 현재 상태와 새로운 상태 업데이트를 내보내는 관찰 가능한 데이터 홀더 흐름입니다. StateFlow의 value 속성은 현재 상태 값을 반영합니다. 상태를 업데이트하고 흐름에 전송하려면 MutableStateFlow 클래스의 value 속성에 새 값을 할당합니다. android 에서 stateFlow는 관찰 가능한 상태를 만들때에 활용합니다. .asStateFlow 를 활용하면 변경 가능 상태 흐름을 읽기 전용 상태 흐름으로 만듭니다. 다른 앱으로 전달 할 때에는 인텐트를 활용한다. 인텐트를 설정하는 기본 프로세스는 다음과 같습니다. 인텐트 객체를 만들고 ACTION_SEND 등의 인텐트를 지정합니다. 인텐트와 함께 전송되는 추가 데이터의 유형을 지정합니다. 간단한 텍스트에는 "te..

android-kotlin 2023.08.31

Kotlin 활동 수명 주기 단계

kotlin의 활동 수명 주기 단계는 위와 같이 나누어져 있습니다. App을 맨 처음 시작 할때에 onCreate가 실행 되어서 수명 주기가 시작됩니다. 그 위의 Started 와 Resumed 는 실제적으로 app 이 사용될 때에 들어가는 state 입니다. 이때 onStart 는 앱이 화면에 표시되지만 상호작용은 할 수 없는 상태이고, onResume은 앱이 화면에 표시되고, 상호작용까지 가능한 상태입니다. onResume의 상태에서 뒤로가기나 홈 버튼을 눌러서 app 이 내려가게 되면, onPause, onStop이 차례로 호출되는데, onPause는 앱의 포커스가 없어지고, onStop의 경우는 실행 이후에 app이 보이지 않습니다. 화면에 다시 돌아가게 되면 onRestart가 호출되고, onS..

android-kotlin 2023.08.28

kotlin 싱글톤 객체 생성

우선 싱글톤이란, 클래스 하나에서 인스턴스를 하나만 생성하는 방식이다. 이때에 kotlin에서는 이를 위한 문법이 있다. object인데, 클래스의 인스턴스가 하나만 필요할 때에, 클래스를 선언하지 않고, 싱글톤 객체로 선언하는 것이다. 이때에 선언하고 값 초기화를 한번에 합니다. object에 접근하기 위해서는 접근자 '.'을 활용한다. 이미 생성된 클래스 안에서도 companion 키워드를 통해서 object 를 생성할 수 있다. 확장 속성 또한 추가할 수 있다. 확장 프로퍼티 선언은 클래스 와 함수 밖에서 val Quiz.StudentProgress.progressText: String get() = "${answered} of ${total} answered" 이런 식으로 선언 해 준다. 선언 할..

android-kotlin 2023.08.26

Kotlin layout 써보기

Kotlin layout 쓸때에 참고사항 Row 또는 Column 컴포저블. Row 및 Column 컴포저블에서 여러 horizontalArrangement 및 verticalAlignment 매개변수를 사용하여 원하는 디자인을 적용해 봅니다. Image 컴포저블. contentDescription 매개변수를 채우는 것을 잊지 마세요. 이전 Codelab에서 언급했듯이 TalkBack은 contentDescription 매개변수를 사용하여 앱의 접근성을 지원합니다. Image 컴포저블이 장식용으로만 사용되거나 Image 컴포저블을 설명하는 Text 요소가 있는 경우 contentDescription 매개변수를 null로 설정할 수 있습니다. Text 컴포저블. fontSize, textAlign, fon..

android-kotlin 2023.08.26

kotlin 변수 type

String Int Double Float Boolean null을 포함해도 되는 경우 : 뒤에 ?를 붙이게 되면 가능하다. null이 포함이 안되는 경우 : String, Int 등의 변수형 타입 null을 허용하는 타입을 다루는 방법은 안전 호출 연산자를 사용한다. ?. 를 붙여서 문제를 해결하는데, 예를 들어서 length 같은 경우에 ?. 를 붙여서 length를 알아낼 수 있다. !! 를 활용할 수 도 있는데, 이때는 null 이 들어왔을때, nullException의 오류를 나타낸다. Unit : kotlin 에서 Unit 유형은 함수가 값을 반환하지 않음을 뜻한다. 함수를 데이터 유형으로도 사용한다. 반환 타입을 () -> Unit 과 선언하지 않는 것은 동일 하다. 함수를 다른 함수에 인자..

android-kotlin 2023.08.22

@OptIn(ExperimentalMaterial3Api::class) 없애기

@OptIn(ExperimentalMaterial3Api::class) 은 베타 버전의 기능을 쓸 때에 추가해주는 어노테이션이다. 이를 매번 써 주어야 하니 귀찮고 공식문서에는 이 어노테이션을 쓰지 않아서 없애는 방법이 있을 것이라고 생각했다. 열심히 삽질하고 구글링을 해본 결과 def composeBom = platform('androidx.compose:compose-bom:2023.08.00') implementation(composeBom) androidTestImplementation(composeBom) 위 코드를 dependency 부분에 추가하면 해결된다는 사실을 알았다.

android-kotlin 2023.08.21

kotlin UDF

UDF 란, 상태가 아래로 향하고, 이벤트는 위로 향하는 패턴이다. 여기서의 viewModel이 보통 UI state를 업데이트 합니다. viewModel에 들어가는 로직의 유형은 UI 동작 로직 입니다. 비즈니스 로직의 경우는 data Layer에 속합니다. UI 이벤트의 경우는 UI layer 혹은 viewModel에서 처리해야 한다. viewModel은 일반적으로 특정 사용자 이벤트의 비즈니스 로직을 처리한다. 비즈니스 로직은 결제 또는 사용자 환경설정 저장과 같은 상태 변경과 관련하여 필요한 조치를 말합니다. 도메인과 데이터 레이어는 일반적으로 이 로직을 처리합니다. 이 가이드에서는 아키텍처 구성요소 ViewModel 클래스가 비즈니스 로직을 처리하는 클래스의 추천 솔루션으로 사용됩니다. UI 동..

android-kotlin 2023.08.21

kotlin 앱 아키텍처 가이드

일반적인 android 앱은 구성 요소, fragment등이 어우러져서 앱을 구성한다. 그런데 각각의 구성요소들은 독립적이기 때문에, 비순차적으로 실행될 수 있으며, 운영체제나 사용자가 언제든지 앱 구성요소를 소멸시킬 수 있습니다. 이러한 이벤트는 직접 제어할 수 없기 때문에 앱 구성요소에 애플리케이션 데이터나 상태를 저장해서는 안 되며 앱 구성요소가 서로 종속되면 안 됩니다. 따라서 앱의 확장성을 고려하여 아키텍처를 적용시킵니다. 맨 처음 할 일은 관심사 분리입니다. 여기서 관심사 분리란? 나는 처음에 관심사 분리를 domain을 나누는 의미로 받아 들였다. 그리고 의미가 거의 유사하다는 것을 깨달았다. 각각의 영역은 분리된 관심사를 가지고, 이 기능들이 명확하게 나누어져야 한다. 그 이후에는 데이터 ..

android-kotlin 2023.08.18

kotlin 앱 구성요소

kotlin의 앱 구성요소는 크게 네가지 유형이 있다. 1. 액티비티 2. 서비스 3. broadcast Receiver 4. 콘텐츠 제공자 액티비티 우선 액티비티는 사용자와 앱이 상호작용을 하기위한 진입점입니다. 따라서 간단하게 앱의 화면 하나라고 보아도 무방한 것으로 보인다. 사용자 플로우를 조절하기 위한 수단 등을 제공한다. 서비스 서비스는 백그라운드에서 앱을 계속 실행시키도록 하는 진입점이다. 백그라운드에서의 서비스는 두 종류가 있는데, 하나는 사용자가 인식할 수 있는 서비스 이고, 또 다른 하나는 인식 하지 못하는 서비스 이다. 따라서 인식 할 수 있는 서비스의 경우에는 그 서비스가 끊이지 않게 신경을 써 주어야 한다. 하지만, 인식 못하는 경우에는 조금 더 자유롭다. broadcast rece..

android-kotlin 2023.08.17