전체 글 (32) 썸네일형 리스트형 Coroutine Android Thread 1. 안드로이드 메인 스레드(UI 스레드)란 ?안드로이드 애플리케이션 구성요소가 시작되면 시스템은 단일 스레드를 가지게 된다. 안드로이드의 UI는 무조건 메인 스레드에서 실행되어야 하기 때문에 UI 스레드라고도 불린다. 만일 메인 스레드에서 무거운 작업을 하게 되어 5초 동안 UI 스레드가 차단되게 된다면 ANR 에러가 발생하게 된다. 이런 문제를 발생하지 않기 위해 메인 스레드는 UI에 관련된 작업만 수행 되어야하고, API 통신이나 무거운 작업은 별도의 스레드를 생성해 수행시켜야한다.2. 안드로이드에서 Thread, AsyncTask를 기피하게 된 이유는 ?리소스 낭비스레드는 생성 될때마다 메모리를 할당 받게 되는데 무차별하게 생성할 경우 메모리 부족 문제컨텍스트 스위치 .. class vs data class kotlin에서 class와 data class 차이점을 이해한다. Class vs Data class 1. 클래스와 데이터 클래스Class객체의 복잡한 동작과 비즈니스 로직을 정의하는데 사용된다.Data Class데이터를 보유하는 목적으로 설계되었다.2. 가장 큰 차이점은 ?데이터 클래스는 자동으로 equals(), hashCode(), toString(), copy(), componentN() 메소드를 생성해 주기 때문에 데이터를 사용하고 관리하는데 큰 편리함을 준다.3. 그럼 클래스는 데이터 클래스의 기능을 사용 못하나 ?사용이 가능하다. 하지만 데이터 클래스처럼 컴파일러가 자동으로 만들어주지 않기 때문에 직접 처리해주는 과정이 필요하다.equals(), hashCode(), toString().. Context Switch ContextSwitch(문맥 교환)와 그와 관련된 개념을 학습한다. ContextSwitch 1. ContextSwitch란 ?CPU는 코어 1개당 하나의 스레드만 실행이 가능하다. 때문에 현재 실행 중인 프로세스,스레드를 멈추고 다른 프로세스, 스레드를 실행시켜야한다. 즉, CPU 코어에서 실행중이던 프로세스, 스레드가 다른 프로세스, 스레드로 교체되는 과정을 이야기한다. 매우 빠르게 진행되기 때문에 사용자 입장에선 동시에 여러 프로세스, 스레드가 실행되는 것처럼 보인다.2. ContextSwitch가 필요한 이유여러 스레드가 동시에 실행 중일 경우 하나의 스레드가 CPU를 독점하는 걸 막기 위해브로킹 작업 발생우선 순위가 높은 스레드의 등장OS 스케줄러가 차례가 끝났음을 판단3. ContextS.. CPU, Thread CPU, Java Thread에 대해 학습힌다. Process와 Thread 1. Process란 ?프로세스는 메모리에 올려져 실행중인 프로그램을 의미한다. 각 프로세스는 독립적인 메모리 공간과 실행 환경을 가지고 있다.2. Thread란 ?스레드는 CPU에서 실행되는 단위를 의미한다. 하나의 프로세스에 여러 스레드가 존재할 수 있고 같은 힙메모리를 공유한다. Java Thread 1. Java에서 Thread란 ?스레드는 CPU에서 실행되는 단위를 의미하고 JVM에 의해 관리 된다. 하나의 프로세스에 여러 스레드가 존재할 수 있고 같은 힙메모리를 공유한다.2. Single Thread vs Multi ThreadJava 애플리케이션은 한개의 메인 스레드를 가지고 있고, 메인 스레드가 main.. Compose와 @Immutable, @Stable Kotlin Immutable, Stable 차이와 개념에 대해 학습한다. Compose 동등성 비교 1. Compose의 Recomposition코틀린은 2가지 유형의 동등성 비교가 있다.구조적 동등성== 연산자를 사용해 두 객체의 값이 동일한지 비교한다.내부적으로 equals() 메소드를 호출한다.참조 동등성=== 연산자를 사용해 두 객체의 메모리가 같은지 비교한다.컴포즈는 코틀린 코드를 사용해 UI를 구성하기 때문에 두가지 동등성을 모두 사용하게 된다. 이때 적절하지 않은 동등성을 사용하게 된다면 불필요한 리컴포지션이 여러번 발생하고 성능에 큰 영향을 줄 수가 있다.@Immutable컴포즈는 참조 동등성을 사용한다.객체가 같다면 내용도 절대 변하지 않는다고 믿는다.@Stable컴포즈는 구조적 .. Navigation3 Compose 화면 전환인 Navigation3에 대해 학습힌다. 화면 전환 1. Compose 화면 전환은 ?컴포즈는 뷰 계층이 아닌 컴포저블 함수 기반의 UI 트리를 사용하기 때문에 View와는 다른 방식으로 화면 전환, 스택을 관리를 해주는 과정이 필요하다.상태 기반 UI이기 때문에 단순히 상태 변경으로 화면 전화를 처리할 수 있지만 화면 페이지 증가하면 백스택 관리 어려움, 데이터 전달 불편 같은 문제가 발생하기 때문에 일반적으로 네비게이션 라이브러리를 같이 사용하게 된다.하지만 Navigation2는 개발자가 직접 백스택 관리를 해야됐기 때문에 사용에 불편함이 컸다. 이런 문제를 해결하기 위해서 Navigation3가 출시되었고 Compose 친화적으로 설계 되었기 때문에 백스택 제어가 가능.. PendingIntent pending intent에 대해 학습한다. PendingInetnet 1. PendingIntent 란 ?OS 시스템에서 유지하는 참조이다. 별도의 애플리케이션이 메모리에 살아있는지 아닌지 관계 없이 실행된다. 애플리케이션 A가 살아 있지 않아도 애플리케이션 B가 애플리케이션 A를 대신해 사전에 적의된 작업을 실행 할 수 있도록 애플리케이션 B가 PendingIntent를 전달할 수 있다.Intent를 가지고 있는 클래스로 원하는 특정 시점에 Intent를 수행할 수 있도록 하는 특징을 가지고 있다. 또, 다른 프로세스에 Pending Intent를 전달하게 된다면 전달 받은 앱은 그 Intent를 본인의 소유처럼 수행 가능한 권한을 가지게 된다. 이런 이유로 다른 앱이 프로세스를 점유하고 있을 경우.. [Compose] 상태관리 컴포저블 상태 관리에 대해 공부한다. Composables 상태 1. Composables 상태란?컴포즈에서 State(상태)는 UI가 가지고 있는 현재 데이터를 의미한다. 버튼이 눌렸을 경우 카운터가 증가하는 UI가 있다고 가정하면 카운터값이 상태가 된다. 상태는 변할 수 있는 데이터이고, UI는 이 상태를 기반으로 리컴포지션해 최신 데이터를 반영하게 된다.2. 상태의 종류호이스팅되지 않은 상태 (Local State)컴포즈 내부에서 직접 상태를 관리하는 경우로 remeber, mutableStateOf를 활용해 간단하게 저장해 사용이 가능하다.@Composablefun Counter(){ var count by remember { mutableStateOf(0) } Column(hori.. 이전 1 2 3 4 다음