본문 바로가기

Android29

[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.
Thread Pool 1. Thread Pool Thread를 생성하면 OS가 메모리 공간을 확보하고 그 메모리를 Thread에 할당한다. 하지만, 수행해야 할 작업의 개수에 따라 병렬 작업 처리가 많아지면 그에 필요한 Thread의 개수가 증가하게 된다. 이 경우, Thread의 생성과 스케줄링으로 인해 OS가 바빠지게 되고 작업을 마치고 수거하는 일은 비용이 크기 때문에 어플리케이션 성능에 큰 영향을 줄 수 있다. 이를 방지하기 위해 Thread Pool을 사용할 수 있다. 위에서 설명한 것 처럼 Thread의 생성과 수거는 비용 소모가 많은 작업이다. 미리 Thread를 여러 개 만들어 두고 작업이 들어오는 대로 할당해서 사용하게 하고 작업이 끝나고 난 뒤에도 그대로 뒀다가 나중에 필요할 때 재사용하기 위한 장치가 Th.. 2021. 12. 13.