Callback 이벤트로 받은 데이터를 Coroutines의 Flow를 활용한 방법에 대해서 소개했었다. 최근 Medium에서 Channel을 사용한 방법을 소개한 글이 있어 Channel을 사용하는 방법을 정리해보려고 한다. 여기에서 사용한 샘플은 단순한 테스트를 한 것이고, 네트워크가 포함되어 있지 않다. 다만 단순한 테스트로도 발생하는 문제가 있어 정리해두려고 한다. 참고한 글은 Kotlin Channel and WebSocket Complete Example (Also Why Not Flow)이다. 이 글에 도움 될 문서는 아래와 같다. Channels Callback으로 받은 데이터를 Coroutines에서 활용하는 방법! Flow 활용 이 글에서 알아볼 내용 Flow와 Channel의 간단한 ..
runBlocking과 GlobalScope에 대해서 알아보았다. Kotlin Coroutines의 runBlocking은 언제 써야 할까? 잘 알고 활용하자! Kotlin Coroutines의 GlobalScope을 어떻게 사용할 수 있을까? - 사실 추천하지 않는다. 이 두 가지의 코루틴은 이유 없이 사용해서는 안 되는 것들이다. 그럼 사용할 수 있는 건 가장 기본적인 CoroutineScope이 남는다. 필자가 한참 코루틴을 학습할 때 적었던 내용에 CoroutineScope의 활용 방법은 이미 다양하게 나온다. Android에서 사용하는 CoroutineScope을 알아보자 이 글에서는 CoroutineScope의 사용 방법을 좀 더 알아보고(MainScope, CoroutineScope), 무한..
코루틴의 runBlocking에 대해서 이야기했다. Kotlin Coroutines의 runBlocking은 언제 써야 할까? 잘 알고 활용하자! 결국 잘 알고 사용하는 건 문제가 없다. 역시나 잘 못 알고 사용하는 경우라면 사실 사용치 않는 게 맞는다고 생각한다. 이번 글은 코루틴 관련 2 번째 글로 GlobalScope에 대해서 알아보려고 한다. 이 역시 Android 개발에서는 lifecycle과 관련이 깊다. 일반적인 서버나 웹에서도 역시 GlobalScope을 무작정 사용하는 건 맞지 않을 것이다. CoroutineScope은 각각의 라이프 사이클을 별도로 가지고 종료를 할 수 있는 반면 GlobalScope은 싱글톤으로 만들어져있어, 잘못 활용한다면 프로그램 전체에 악영향을 미칠 수 있다. 싱..
코루틴을 활용하다 보면 문서에 나오는 것 외에도 다양하게 활용될 수 있다. 하지만 모든 Scope이 정답은 아니고, 상황에 맞는 게 있다. 안드로이드에서는 당연하게도 CoroutineScope을 사용해 lifecycle을 따르도록 개발하는 걸 권장하는데 onDestroy 시점에 cancel() 할 수 있는 형태로 만들어져 있다. Lifecycle을 따르는 건 매우 자연스럽다. 이 글에서는 다양하게 사용할 수 있는 Scope 중 먼저 runBlocking을 알아본다. 이 글에서 알아볼 내용 runBlocking을 UI에서 사용해도 괜찮을까? runBlocking의 내부 코드를 알아보자. 그럼 runBlocking은 언제 쓰는 게 좋을까? 자세한 내용은 이어 보기 Kotlin Coroutines의 runBl..
안드로이드의 익숙한 BaseXXX class를 알아보고, 설계의 중요성을 알아보자. | I’m an Android Developer. thdev.tech Java에서 상속은 매우 익숙하다. 앞에서 적은 상속! 악마의 속삭임, 그 속에 숨겨진 문제점, Kotlin에서는 Delegation을 활용해 보자. 글을 보면 알겠지만 상속에는 숨겨진 문제점이 있다. 상속을 지키리 면 open을 통해 열고 닫고를 잘해야 하고, 설계를 잘 해야 하고 주석도 잘 달아주는 게 좋다. 처음의 의도와 달라질 수 있는 환경이라면 상속보다는 다른 방법을 활용하는 게 좋다. 이 글에서는 Android에서 흔하게 작성하는 class BaseXXX를 알아보고 좀 더 좋은 접근 방법을 알아보려고 한다. 이 글에서 알아볼 내용 안드로이드에..
아이폰은 3번째 구입했다. iPhone X는 구매해서 바로 팔았었다. 딱히 나랑 맞지 않았기 때문에 바로 팔아버렸다. 거기다 빨리 산다고 이베이에서 잘못 구매한 제품... 추가 돈도 들었었고, 정 떨어져서 팔아버렸다. [개봉기] 아이폰 X - 개봉을 해보았지만 - 시간이 필요하다 10주년 기념 에디션 아이폰 텐을 구매해봤습니다. 기다리는 게 싫어서 이베이를 열심히 찾아서 구매했는데 그냥 기다리는 걸 선택할 걸 그랬습니다. 들어간 총비용이 제품 구매 가격 + 배송비 + thdev.net 두 번째 아이폰으로 XS Max를 구입했는데 2년을 꽉 채워 사용하고 아이폰 12 Pro로 갈아탔다. 보험도 들어둬서 다행히 한번 깨 먹었는데 보험의 효과를 보았었다. [개봉기] 아이폰 XS - 가로수길에서 직접 받은 아이..
이번 블랙프라이데이에 사고 싶었던 Anker 100W 멀티 충전기가 할인했다. 사이버 먼데이로 79.99달러로 여전히 할인해 판매 중이다. 79.99달러는 현재 8만 8천 원인데, 한국에서 정가 10만 9천 원이고, 최저가는 95,160원 쿠팡에서 81,750원에 할인 판매했었다. 현재는 로켓 와우 기준 95,160원이다. 앤커 파워포트 아톰 PD4 멀티충전기 100W A2041Q21 COUPANG www.coupang.com 결국 미국에서 블프/사이버 먼데이 할인보다 높은 할인율로 구매했다. 정가 기준으로도 아마존에서 판매하는 것보단 한국에서 10만 원에 구입하는 게 더 저렴하다. 구매 이유? 2017년 맥북 충전기는 87W이고, 어댑터를 사용하면 총 100W를 활용할 수 있다. 여전히 케이블은 들고 ..
올해 초 재택근무를 했었다. 재택근무로 인해 새로운 모니터와 마운트를 하나 구입했다. LG 모니터를 구입했는데 27UL650을 구입했다. 그런데 이 제품은 맥북과 사용 시 문제가 하나 있다. HDMI 연결하고, 노트북을 빼고 다른 노트북과 연결하면 모니터 인식을 하지 못하는 불량이다. AS가 왔었지 만 이상이 없어 돌아 갔으나, 이는 윈도 노트북과는 무관했고, 맥에서만 발생했다. 영상까지 찍어 보냈지만 알아봐 준다고 한 이후 연락이 없었다. LG전자 울트라HD 27UL650 : 네이버 쇼핑 패널 : IPS패널(광시야각), 최대 해상도 : 3840x2160(4K UHD), 화면비율 : 16:9, 응답속도 : 5ms, 밝기 : 350cd, 픽셀피치 : 0.1554mm, HDR : DisplayHDR 400,..