dahyun
-
How do Kotlin coroutines work internallyKotlin 2023. 3. 6. 13:00
안녕하세요 안드로이드 11기 강다현입니다. Coroutine under the hood 이번엔 코루틴의 내부 동작에 대해 살펴보도록 합시다. 이 내부 동작에서의 핵심 키워드는 Continuation (Continuation-Passing-Style)입니다. 우리가 코루틴을 사용할 때, 기본적으로 suspend function은 함수를 중간에 멈출수가 있습니다. 그러나 suspend function을 사용하다 보면 이런 의문이 생깁니다. 다시 멈추고 다시 돌아갈 땐 (resume) 내부적으로 어떻게 동작하는 걸까요? 어떤 포인트에서 다시 시작해야할지 어떻게 알까요? (일종의 마법같은? 현상!) 이 문제를 해결하기 위한 개념이 바로 Continuation-Passing-Style. CPS입니다. 먼저 간단한..
-
Corotuine Composing Suspending FunctionsKotlin 2023. 2. 25. 15:49
안녕하세요 안드로이드 10기 강다현입니다. 이번에 알아볼 내용은 Corotuine의 세 번째 스터디 내용 Composing Suspending Functions입니다! 코틀린 스터디는 한 주에 두 개씩 공식 문서를 같이 보면서 진행되는데요, 저는 그중 스터디 두 번째 주에서 Composing Suspending Functions 파트의 발표를 맡았었습니다. 본 글에서는 이전 주에서 헷갈렸던 내용 3가지를 보고, 그 이후 세 번째 파트 스터디 내용인 Composing Suspending Functions에 대해 알아보겠습니다! 공식 문서 헷갈렸던 것들 저는 공식문서 1,2 파트에서 3가지가 헷갈렸는데요, 하나하나 살펴보도록 하겠습니다. 1. 코루틴 생성 시 자동 생성되는 스레드 코루틴을 생성하다 보면 스레..
-
Lock ScreenAndroid 2023. 2. 24. 02:23
안녕하세요, 안드로이드 10기 강다현입니다. 이번에는 제 개인 프로젝트에 쓰이는 lock screen - 잠금화면에 대해 알아보겠습니다. (프로젝트 전 복습 겸 블로그 글도 써버리기…) 제가 알기로는 서비스와 브로드캐스트리시버의 사용 에제로 많이 등장하는 친구입니다. 잠금화면 자체가 좀 옛날에 유명했던 느낌? 인것 같네요 잠금화면을 만들기 전에 먼저 Andoid 8.0 Oreo 버전에 있었던 변화를 알아봐야 합니다. Andoid 8.0 Oreo 에서의 변경점 - Background Execution Limits Oreo Background Execution Limits 기본적으로 백그라운드 서비스에 제한이 생깁니다. Background Service Limitations: While an app is i..
-
Custom ViewAndroid 2023. 2. 24. 01:44
안녕하세요 안드로이드 9기 강다현입니다. 이번에 알아볼 내용은 Custom View 입니다! 안드로이드로 앱을 개발할 때, 기존에 존재하는 뷰에 기능적인 부분을 조금 더 커스터마이징해서 구현하거나 여러 화면에서 같은 기능, 속성을 가지는 뷰를 재사용하고 싶을 때 여러 뷰를 통합하면서 원하는 속성을 넣고 싶을 때 등등… 이러한 needs가 생길 때 Custom View를 만듭니다. 그러면 어떻게 만드는가? 부터 시작해보도록 하겠습니다. Custom View 만들기 View 기본 먼저 View를 좀 알아야 Custom View도 만들던가 하겠죠? 기본적으로 모든 view 클래스들(Button 이라던지..ImageView 라던지)은 View 클래스를 상속하기 때문에, 바로 View를 상속하거나 subclass..
-
Dagger - Raw DaggerAndroid 2023. 2. 24. 01:32
Dagger - Raw Dagger 이번에는 제가 프로젝트에 적용하며 공부해 본Dagger2에 대해 복습하는 겸! 해서 글을 작성해 보겠습니다. (이하 Dagger) Dagger는 리플렉션을 사용하지 않고 런타임에 바이트코드도 생성하지 않는 것을 특징으로 가지는 Android의 DI 라이브러리입니다. DI란 무엇인가? 에 대해서는 일단 알고 있다고 가정하겠습니다. 흔히 다른 DI 라이브러리라고 알려지는 Koin과 비교되는데 Koin은 정확히 말하자면 DI 라이브러리는 아닙니다. Koin은 Service locator라는 패턴이고, 이와 관련해서는 진성님의 글을 참조하도록 합시다. 아무튼 이런 Dagger는 보일러 플레이트 코드를 없애는 나름의 단계를 거친다고 할 수 있습니다. (완전히 자의적으로 정한 단..