2021년도 잘 부탁드려요. - 이건 회고인가 자랑인가?
2021년도 3일이 지나가고 있다. 역시 휴일은 빠르게 흘러간다.
2016년 thdev.tech 도메인을 구입하고 벌써 5년이 흘러가고 있다.
도메인은 사실 tech가 처음 나오고 10%에($5) 구입할 수 있어 구입했던 도메인인데 현재는 매년 $50의 유지비가 발생한다.(슬픈 사실)
Android developer's blog. story.
2021년도 3일이 지나가고 있다. 역시 휴일은 빠르게 흘러간다.
2016년 thdev.tech 도메인을 구입하고 벌써 5년이 흘러가고 있다.
도메인은 사실 tech가 처음 나오고 10%에($5) 구입할 수 있어 구입했던 도메인인데 현재는 매년 $50의 유지비가 발생한다.(슬픈 사실)
runBlocking과 GlobalScope에 대해서 알아보았다.
이 두 가지의 코루틴은 이유 없이 사용해서는 안 되는 것들이다. 그럼 사용할 수 있는 건 가장 기본적인 CoroutineScope이 남는다.
필자가 한참 코루틴을 학습할 때 적었던 내용에 CoroutineScope의 활용 방법은 이미 다양하게 나온다.
이 글에서는 CoroutineScope의 사용 방법을 좀 더 알아보고(MainScope, CoroutineScope), 무한 루프 상의 cancel 처리 동작을 알아보려고 한다.
코루틴의 runBlocking에 대해서 이야기했다. Kotlin Coroutines의 runBlocking은 언제 써야 할까? 잘 알고 활용하자! 결국 잘 알고 사용하는 건 문제가 없다. 역시나 잘 못 알고 사용하는 경우라면 사실 사용치 않는 게 맞는다고 생각한다.
이번 글은 코루틴 관련 2 번째 글로 GlobalScope에 대해서 알아보려고 한다.
이 역시 Android 개발에서는 lifecycle과 관련이 깊다. 일반적인 서버나 웹에서도 역시 GlobalScope을 무작정 사용하는 건 맞지 않을 것이다.
CoroutineScope은 각각의 라이프 사이클을 별도로 가지고 종료를 할 수 있는 반면 GlobalScope은 싱글톤으로 만들어져있어, 잘못 활용한다면 프로그램 전체에 악영향을 미칠 수 있다.
싱글톤 자체만으로도 사실 악영향을 미칠 수 있는데, GlobalScope을 이용해 새로운 컨텍스트를 만들어 사용하는 케이스도 있다.
결국 상황에 따라 잘 활용하면 이득을 볼 수 있으니 이 글에서는 GlobalScope에 대해서 좀 더 알아보려고 한다.
코루틴을 활용하다 보면 문서에 나오는 것 외에도 다양하게 활용될 수 있다. 하지만 모든 Scope이 정답은 아니고, 상황에 맞는 게 있다.
안드로이드에서는 당연하게도 CoroutineScope을 사용해 lifecycle을 따르도록 개발하는 걸 권장하는데 onDestroy 시점에 cancel() 할 수 있는 형태로 만들어져있다.
Lifecycle을 따르는 건 매우 자연스럽다.
이 글에서는 다양하게 사용할 수 있는 Scope 중 먼저 runBlocking을 알아본다.
Java에서 상속은 매우 익숙하다. 앞에서 적은 상속! 악마의 속삭임, 그 속에 숨겨진 문제점, Kotlin에서는 Delegation을 활용해 보자. 글을 보면 알겠지만 상속에는 숨겨진 문제점이 있다.
상속을 지키리 면 open
을 통해 열고 닫고를 잘해야 하고, 설계를 잘 해야 하고 주석도 잘 달아주는 게 좋다.
처음의 의도와 달라질 수 있는 환경이라면 상속보다는 다른 방법을 활용하는 게 좋다.
이 글에서는 Android에서 흔하게 작성하는 class BaseXXX
를 알아보고 좀 더 좋은 접근 방법을 알아보려고 한다.