본문 바로가기

Android28

[Coroutine] 스코프빌더 - runBlocking, launch runBlocking 코루틴을 만드는 가장 간단한 함수. 코루틴을 만들고 수행이 끝날때까지 다른 코드를 수행하지 못하게 막는다 runBlocking 함수 내에서 수신객체(Receiver)는 코루틴이다 runBlocking 함수 내에서 this를 수행 결과 : BlockingCoroutine{Active}@7a46a697 BlockingCoroutine은 CoroutineScope의 자식 코루틴의 시작은 코루틴 스코프다 현재 실행되는 스레드 이름을 확인할 수 있는 방법 : Thread.currentThread().name 코루틴 컨텍스트 : 코루틴을 제대로 처리하기 위한 정보를 파라미터로 가지고 있다 [BlockingCoroutine{Active}@7a46a697, BlockingEventLoop@1.. 2024. 5. 4.
[Coroutine] 처음 만나는 코루틴 강의 제목 The RED : 효과적인 비동기처리를 위한 Kotlin Coroutines & Flow 마스터 by 김용욱 코루틴 여러번 개념을 정리해봤는데 아직도 헷갈리는데 이번기회에 내 머리에 주입해보기 위해 다시 한번 공부해보기로 했습니당 동시성, 병렬성이 필요한 이유우리는 멀티 테스킹을 하지 않으면 살아 남을 수 없는 환경(?)이다 음악을 들으면서 인스타도 봐야하고, 통화하면서 캘린더를 보면서 일정도 확인해야하고, 유투브를 보면서 네이버 검색도 해야한단말이다.이로인해 하나의 칩에 여러개의 코어가 생겼고 여러개의 프로세스/스레드가 하나의 메모리를 쓸 수 있게 되었다하지만, 공유 메모리 사용으로 인해 데이터 무결성 문제가 발생할 수가 있다.그로인해 하나의 프로세스안에서 동작하는 안드로이드 앱에서도 여러.. 2024. 5. 4.
[코틀린] apply, run, with, let, also? Kotlin은 객체의 컨텍스트 내에서 코드 블록을 실행하는 것이 목적인 여러 함수가 포함되어 있습니다. 람다 표현식이 제공된 객체에서 이러한 함수를 호출하면 임시 범위가 형성되고, 이 범위에서는 이름 없이 객체에 액세스할 수 있습니다. => 이러한 함수를 범위 함수(스코프 함수)라고 합니다. 클래스에서 생성한 인스턴스를 스코프에 전달하면 인스턴스의 속성이나 함수를 좀 더 깔끔하게 불러 편하게 쓸 수 있는 방법 main함수와 별도의 scope에서 인스턴스의 변수와 함수를 조작하므로 코드가 깔끔 apply 참조 연산자 사용하지 X, 처리가 끝나면 인스턴스 반환 - 인스턴스를 생성한 후 변수에 담기 전에 '초기화 과정'을 수행할 때 많이 사용 - 수신객체의 프로퍼티만 사용하여 초기화한다 val peter = .. 2023. 11. 29.
안드로이드에서 dp란? 안드로이드 시스템은 ldpi, mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi로 구분됩니다. dpi : dots per inch, 1인치 안에 있는 도트의 개수 (dots이 곧 픽셀) dp : density Independent Pixel, 밀도에 독립적인 픽셀 = 해상도에 관계 없이 이미지를 같은 비율로 표현 안드로이드에서는 화면의 크기에 관계없이 이미지의 비율을 동일하게 만들고자 픽셀 대신 dp개념을 적용한다. 160dpi 를 기준 해상도로 정하고, 화면 해상도에 따라서 1dp가 표현하는 픽셀의 수는 다르게 나타난다. 따라서 dp단위로 표현된 이미지는 해상도가 달라도 그 비율을 동일하게 유지시킬 수 있다. 단위를 dp로 설정하면, 시스템에서 그 기기의 dpi를 보고 크기를 조정한다. m.. 2023. 11. 23.
[깡샘의 안드로이드 앱 프로그래밍 with 코틀린] 코틀린 자바에서는 최상위에 클래스만 선언할 수 있으며, 변수나 함수는 최상위에 선언할 수 없다. => 코틀린은 가능 코틀린의 모든 변수는 객체다 변수는 값을 저장할 수 있는 메모리상의 공간 * Java 데이터 타입 int나 char같이 변수의 형을 지정해주고 있는 것이 변수의 타입(data type = 자료형) 자료형은 data의 type에 따라 값이 저장될 공간의 크기와 저장 형식을 정의한 곳 - 기본형(primitive value, 원시 타입, 자료형) : boolean, char, byte, short, int, long, float, double => 산술 연산 가능, null로 초기화 불가, 스택 메모리에 저장되며 접근할 때 한번의 참조면 충분 - 참조형(reference type, 래퍼 클래스) : .. 2023. 11. 21.
Flow 개념 Flow란? coroutine에서 suspend함수는 단일값만 출력하는데 반응형 프로그램을 개발하다보면 데이터를 순차적으로 받아야할 경우가 있음. 이 때 flow를 통해서 데이터를 받아서 데이터 흐름을 만드는것. 생산자 : 데이터를 생산합니다. 서버와의 통신을 통해 데이터를 가져온것 중개자 : 데이터를 가공, 수정합니다. map함수등을 사용해 데이터를 필요에 맞게 변경 소비자 : 데이터를 사용합니다. 데이터를 사용하는 viewModel, view 등 Flow 생성하기(생산자) class Datasource { suspend fun fetchData(): Flow { return flow { // flowBuilder for(value in 0..3) { delay(1000) emit(value.toStr.. 2023. 8. 30.