(😨 오류 정정) 🤔 2025년도에도 개발자들은 코루틴 예외 처리 때문에 밤샘각? 😨 (2025학년도 안드로이드 탐구영역 문제풀이)

(😨 오류 정정) 🤔 2025년도에도 개발자들은 코루틴 예외 처리 때문에 밤샘각? 😨 (2025학년도 안드로이드 탐구영역 문제풀이)

이 글은 2025 안드로이드 탐구 영역에 나온 문제 중 일부를 해석하는 글의 형태로 작성합니다. 문제 전체를 담지 않고, 중요한 해설을 작성합니다.

정정

24.12.11 해석에 오류가 있으며, 코드 검증 과정에서 오류를 확인하여 수정합니다.

댓글로 오류가 있다고 알려주신 Larry, 송준영님 감사합니다.

안드로이드 탐구 영역 후기 글

어떤 문제일까?

코루틴 Exception 발생 시 예외 범위를 물어보는 질문에 대한 해석을 담는 글이다.

대략 적어보면

- 최상위 Job A는 viewModelScope.launch로 생성되고 내부에서 B, C를 생성한다.
- B에서는 coroutineScope 내에서 D, E를 생성한다.
- C에서는 withContext(Dispatchers.IO) 내에서 F를 생성한다.

모든 Job이 Finish 되었다고 가정

A-F까지 모두 Job이 리턴된다는 사실과 모든 Job이 동작 완료되었을 때를 가정한다.

이 부분에 대한 글은 이미 과거에도 작성했어서 링크를 추가해두겠다.

이 두 개의 글을 이해한다면 사실 해석할 필요도 없지만, 새로운 마음으로 글을 적어본다.

이 글에서는

  • 2025 안드로이드 탐구 영역에 나온 문제 일부를 정리한다.
  • Job에 대한 이해가 필요하다.

Read More

Kotlin Coroutines Flow의 Cold/Hot flow(Stream)의 데이터 흐름(Data flow) 이해해 보기

이전 글에서 데이터 흐름(Data flow)을 이해해 보는 데 있어 필요한 것은? 짝퉁 개발자처럼 논하기란 주제로 글을 작성했다.

이번 글에서는 이 글에 나온 내용 중 Coroutines Flow에 대한 데이터 흐름을 이해하기 위한 글을 작성해 보았다.

이 글에서는

  • Coroutines Flow
  • 지속적인 흐름
  • Cold/Hot stream
  • ReactiveX에서 제공하는 subject에 대해서 이해하기

Read More

데이터 흐름(Data flow)을 이해해 보는 데 있어 필요한 것은? 짝퉁 개발자처럼 논하기

데이터 흐름(Data flow)을 이해해 보는 데 있어 필요한 것은? 짝퉁 개발자처럼 논하기

제미나이에게 개발에서 데이터 흐름이란?를 알려달라고 했다.

개발에서 데이터 흐름은 어떤 시스템이나 소프트웨어에서 데이터가 생성되고, 변환되며, 저장되고, 전송되는 과정을 의미합니다. 마치 물이 강을 따라 흐르듯이, 데이터는 시스템 내에서 특정한 경로를 따라 이동하며 가치를 창출합니다.

위키백과도 한번 확인해 보았다.

위키 백과 데이터 흐름 - 링크

데이터 흐름(Data flow, 데이터 플로)란 하나의 작업을 수행하기 위하여 실행되는 각각의 세부 작업들 사이에서 자료가 입력되고 출력되는 모습을 의미한다.

결국 같은 말이다.

우리가 매우 흔하게 사용하는 데이터 흐름을 가볍게 이해하는 표현으로 서문을 작성해 보았다.

이 글에서 데이터 다양한 데이터 흐름을 이해하는 데 도움이 될만한 내용을 정리해 본 글인데, 실제 함수 위주이니 참고만 한다고 생각하길

이 글에서는

  • 함수의 blocking vs nonblocking
  • Observer pattern + stream
  • UDF(unidirectional data flow)
  • 매우 주관적으로 작성한 글이다.
  • 데이터 흐름(Data flow)에 대한 새로운 형태를 만드는 짝퉁 설명이니 재미로 읽기를

Read More

안드로이드 Theme와 GetStream Theme를 알아보고 CompositionLocalProvider의 역할을 알아본다.(GetStream 후원글)

안드로이드 Theme와 GetStream Theme를 알아보고 CompositionLocalProvider의 역할을 알아본다.(GetStream 후원글)

Compose Theme는 어떻게 적용하고 활용할 수 있을까?

  • Material Theme에 따라서 사용할까?
  • 우리만의 디자인 시스템 색상 값과 필요한 정보를 포함하여 Custom theme 구성?

이런 고민은 한 번쯤? 해볼 수 있을 것 같다.

본 글은 GetStream의 후원으로 작성된 글로 다음의 내용을 다루어보려 한다.

  • Material 3 사용하지 않는다면?
  • Material 3 사용하여 테마 만들기?
  • SDK로 유명한 GetStream에서는 Theme를 어떻게 사용하고 있을까?
  • 추가로 Theme 함수의 내부에는 CompositionLocalProvider가 많던데? CompositionLocalProvider을 좀 더 살펴보자.

본문을 통해 하나씩 이야기해 보겠다.

읽기 전에

  • XML Theme는 다루지 않는다.
  • Compose component에 대해 설명하지 않는다.
  • Material 3에서 사용하는 Token 방식의 Color 지정을 논하진 않는다.
  • GetStream 후원으로 작성한 글이다.

Read More

Android에서 효율적인 모듈 디펜던시 관리하기, build-logic으로 전환하기?

모듈을 지속적으로 추가하는 요즘 개발에서는 디펜던시 관리는 어떻게 하는 것이 좋을까?

필자는 모듈 240개 정도를 회사 프로젝트에서 활용하고 있는데 아래와 같다.

  • test 모듈
  • 구현체에 대한 인터페이스 정의하는 모듈
  • 구현체 모듈

초점은 최대한 손 안 대고 자동으로 모듈을 import 하고, 디펜던시를 관리하는 것이다.

build-logic을 활용하고, version catalog을 활용하여 디펜던시를 관리하고, 추가되는 모듈은 자동 import 되도록 하는 방법을 소개한다.

Read More