[Android] Android Activity Lifecycle 정리
·
기타/Android
Activity Lifecycle 와 Lifecycle callbacks 사용자가 앱을 탐색하고, 앱에서 나가고, 앱으로 다시 돌아가면, 앱의 Activity 인스턴스는 수명 주기 안에서 서로 다른 상태를 통해 전환된다. Activity 클래스는 activity의 상태 변화를 알아차릴 수 있는 여러 콜백을 제공한다. 각 콜백은 상태 변화에 적합한 특정 작업을 실행할 수 있도록 한다. Lifecycle callbacks 개념 및 구현 정보 onCreate() Activity를 생성할 때 호출, 필수적으로 구현해야 한다. Activity의 전체 수명 주기 동안 한 번만 발생해야 하는 기본 애플리케이션 시작 로직을 실행한다. savedInstanceState : Activity의 이전 저장 상태가 포함된 Bu..
[Kotlin] This expressions 란?
·
기타/Android
this가 쓰이는 상황 this의 의미 클래스 안 클래스의 현재 객체를 참조 확장 함수 안 점의 왼쪽에 전달 된 리시버 파라미터를 참조 리시버가 있는 함수 리터럴 안 점의 왼쪽에 전달 된 리시버 파라미터를 참조 Qualified this @label 없으면 가장 안쪽에 있는 스코프를 참조한다. this를 통해 외부 스코프(클래스, 확장 함수, 리시버가 있는 label 함수 리터럴)에 접근 할려면 this@label로 작성하면 된다. class A { // label @A inner class B { // label @B fun Int.foo() { // label @foo val a = this@A // A class를 참조하는 this val b = this@B // B class를 참조하는 this ..
[Kotlin] Sealed class 란?
·
기타/Android
Sealed class 란? Sealed class 와 interface 는 상속에 대한 제어를 제공하는 제한된 클래스 계층이다. when으로 타입 검사할 때 문제점 코틀린 컴파일러는 when을 사용하여 타입을 검사할 때 꼭 else 분기를 덧붙이게 강제한다. 의미 없는 else 분기가 생길 수 있다. 이후 새로운 하위 클래스를 추가하더라도 컴파일러가 when이 모든 경우를 처리하는지 제대로 검사할 수 없다. interface Expr class Num(val value: Int) : Expr class Sum(val left: Expr, val right: Expr) : Expr fun eval(e: Expr) : Int = when(e) { is Num -> e.value is Sum -> eval(..
[Kotlin] Scope functions(let, run, with, apply, also) 정리
·
기타/Android
Scope functions(범위 지정 함수)란? Kotlin standard library에서는 컨텍스트 객체에 대한 작업들을 블록내에서 수행하도록 하는 함수들을 포함한다. 블록 안에서는 객체의 이름없이 객체에 접근할 수 있다. 이에 따라 코드를 보다 간결하고 읽기 쉽게 만들 수 있다. 이러한 함수들을 Scope functions라고 한다. Scope functions 종류 및 차이점 Scope functions 종류 함수 컨텍스트 객체 참조 반환 값(전체 식의 결과) 확장 함수 유무 let it 람다의 결과 예 run this 람다의 결과 예 run - 람다의 결과 아니오(컨텍스트 객체 없이 호출된다.) with this 람다의 결과 아니오(컨텍스트 객체를 인수로 사용한다.) apply this 컨텍..