Sign in

iOS 개발자를 꿈꾸는 안드로이드 개발자 / github.com/jisungbin

필자는 지금까지 DI를 그냥 기술로만 쓰고 있었다. 그러다가 갑자기 이걸 왜 쓰는거지?? 하는 의문이 들기 시작했고 DI를 쓰는 이유와 작동 원리에 대해 공부하고 이를 기록하고자 이 글을 작성한다.

안드로이드에서 DI는 보통 Koin이나 Hilt로 많이 진행된다. 이 글에서는 예시 코드에 Hilt를 사용하겠다.

DI는 왜 쓸까?

우리에게 없어서는 안될 커피와 사람 클래스가 있다.

이때 Coffee는 기본적으로 카페인 1500을 충전시켜주게 만들어져있고, drinkCoffee 함수를 실행시키기 위해선 Coffee 인스턴스를 직접 만들어야 한다. 이런 경우를 People 클래스가 Coffee 클래스에 의존성을 가졌다고 한다.

카페인 1500을 한 번 …


최근 MVI 디자인패턴이 안드로이드에서 주목을 받기 시작했다. 필자 또한 MVI 패턴을 저번달에 안드로이드 개발자 채팅방에서 처음 알게 되었다. 그렇다고 이게 올해 나온 패턴은 아니다. 찾아보다 보니깐 이미 2018년도에도 쓰이던 패턴이였다…

MVI?

본문으로 들어와서, 왜 MVI라는 새로운 패턴이 뜨기 시작했을까? 우선 기존까지 우리가 안드로이드에서 흔히 쓰던 패턴은 MVVM 이였을 것이다. 하지만 이 MVVM 패턴에서는 크게 상태부수 효과라는 문제가 있었다.

상태 문제

우리는 개발을 하면서 수많은 상태를 만들어 낸다. 만약 이 상태 제어가 제대로 이뤄지지 않는다면 아래와 같은 문제가 발생할 것이다.

이미지 출처: https://proandroiddev.com/mvi-a-new-member-of-the-mv-band-6f7f0d23bc8a

위 사진은 보면 분명 원하는 값 …


op.gg 세미나에서 발표했던 내용을 기록용으로 남긴다. 원래 유튜브에 올릴려고 했는데 첫 발표라 너무 긴장해서 그런지 녹화를 못 했다…

안녕하세요 저는 모바일 UI 개발의 새로운 혁명 이라는 주제로 발표할


안드로이드는 싱글 스레드인걸로 알고 있다가, 싱글 스레드인데 코루틴은 어떻게 새로 큐를 만들어서 하는거지? 하는 이상한 의문점에 스레드에 대해 다시 공부하기 시작했다. 공부하고 얻는 지식을 기록하기 위해 이 글을 작성한다.

스레드? (Thread?)

우선 스레드가 뭘까? 스레드는 프로세스에서 실행되는 실행 흐름의 단위라고 말할 수 있다. 안드로이드에서 스레드는 기본적으론 메인 스레드 하나만 갖고 있다. 이렇게 스레드가 하나밖에 없는 상태를 싱글 스레드 라고 부른다.

메인 스레드는 어디서 시작될까? 안드로이드는 결국 자바로 실행되고, JVM는 프로그램의 시작점인 main() 함수를 찾아서 시작된다. 하지만 안드로이드는 main() 함수를 사용하지 않는 …


아마 이 글의 제목을 보고 들어온 사람들이라면 인라인에 대해 아직 헷갈리거나, 지식을 보충하기 위해서 들어왔을 것이다. 하지만 우리는 인라인에 대해 잘 모르지만, 이미 많은 곳에서 사용하고 있다. 필자 또한 그래서, 이를 공부하고 공유하고자 해당 글을 작성한다.

인라인?

우리가 인라인을 어디서 쓰고 있을까? 필자의 경우 프로젝트를 진행하면서 가장 많이 쓰게 되는 forEach에 인라인이 적용돼 있었다. forEach는 다음과 같이 정의돼 있다.

public inline fun <T> Iterable<T>.forEach(action: (T) -> Unit): Unit {
for (element in this) action( …

jisungbin

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store