본문 바로가기

Kotlin36

(Kotlin) open class, abstract class Java에는 final이라는 키워드가 있다. final로 선언된 클래스와 메소드는 기본적으로 상속과 오버로드가 제한된다. 즉, 자식 클래스에서 이 클래스나 메소드를 재정의하려 할 때 컴파일 에러를 발생시키게 된다. final로 선언한다는 의미는 명시적으로 Override Method를 제한하고 싶을 때 사용할 수 있다. Kotlin은 어떨까? Kotlin의 클래스와 메소드는 기본적으로 final이다. 하지만, 우리는 다양한 이유로 클래스나 메소드를 상속하여 개발해야 하는 상황이 존재한다. 이를 위해, Kotlin은 상속에 사용되는 몇가지 키워드를 제공하고 있다. 1. open class open class Shape class Rectangle(var height: Double, var length: D.. 2022. 7. 27.
[ViewModel] ViewModel 시작하기 1. ViewModel 개요 ViewModel은 수명주기를 고려하여 UI 관련 데이터를 저장하고 관리하도록 설계되었다. 특히, 화면 회전과 같은 구성 변경에도 데이터 유지가 가능하다. 1.1. 기존의 단점들 단순한 데이터의 경우 Activity는 onSavedState()를 사용해 onCreate()의 Bundle에서 데이터를 복원할 수 있었다. 하지만, 이 경우는 Bitmap과 같은 대량의 데이터에는 적합하지 않다. View에서는 비동기 호출을 자주 한다. View는 비동기 호출을 관리하며 많은 유지관리가 필요하고, 화면 회전과 같은 구성 변경 시 개체가 다시 생성되는 경우 이미 수행한 호출을 다시 호출하기 때문에 리소스 낭비가 생기게 된다. View는 UI 표시, 사용자 상호작용, 권한 요청과 같은 .. 2022. 3. 11.
(Coroutine) 0. 개요 및 특징 1. 루틴? 코루틴? 1.1. 루틴, 메인 루틴, 서브 루틴 루틴(Routine)은 어떤 작업을 정의한 명령어의 집합을 의미한다. 간단하게 우리가 작성하는 코드들의 집합이라고 볼 수 있다. 따라서 하나의 프로그램은 보통 크고 작은 여러 가지 루틴들을 조합하여 만들어진다고 볼 수 있다. 루틴은 다시 메인 루틴(Main Routine)과 서브 루틴(Sub Routine)으로 나뉜다. 일반적으로 main 함수에 의해 수행되는 프로그램의 흐름을 메인 루틴이라고 한다. 반면, main 함수 안에서 실행되는 개별 함수들에 의해 수행되는 흐름을 서브 루틴이라고 한다. 메인 루틴과 서브 루틴의 차이는 아래의 코드를 통해 쉽게 확인할 수 있다. fun main() { val addValue = plusOne(10) //.. 2021. 12. 20.
Future를 이용한 Thread Pool 작업 완료 통보 2021.12.13 - [Android : Kotlin/Deep-Dive] - 안드로이드 Thread Pool (위 글에서 이어집니다.) 1. 블로킹 식 작업 완료 통보 생성한 Thread Pool에서 작업 처리를 요청할 때 submit( ) Method는 작업 처리 결과를 Future 타입의 객체로 반환한다. submit( ) Method에 사용되는 파라미터는 아래와 같다. 반환되는 Future 객체는 submit( )을 통해 완료된 단일 작업 결과가 아니라 모든 작업이 완료될 때까지 기다렸다가 최종 결과를 얻는 데 사용한다. 그렇기 때문에 Future 객체를 지연 완료 객체 (Pending Completion Object)라고도 한다. Future의 get( ) Method를 호출하면 Thread가 .. 2021. 12. 13.