Developing Myself Everyday
article thumbnail
@Inject로도 @Provide할 수 있다
Android/Kotlin 2023. 11. 25. 12:45

사진: Unsplash의Sangga Rima Roman Selia 이 게시글은 저의 무지함으로 발생한 질문에서 시작된 게시글입니다. Now In Android를 참고하여 프로젝트를 진행하던 도중 "Data 모듈에서 Domain의 Usecase에 Repository를 주입할 때에는 @Provide를 사용해서 이를 주입해 주는데, Feature 모듈에서 Usecase를 주입 받을 때에는 왜 @Provide를 하지 않아도 주입받을 수 있는가?" 라는 질문이 생겼습니다. 이 게시글에서 이 질문에 대한 답을 하고자 합니다. 질문에 대한 답 위의 질문은 사실 Dagger를 잘 이해하지 못하고 Hilt를 사용해서 생긴 질문입니다. @Provide와 @Inject은 컴포넌트에서 의존성 그래프를 만들기 위한 과정입니다...

article thumbnail
코틀린에서 Backing Properties를 왜 사용해야 하죠?
Android/Kotlin 2023. 11. 22. 18:04

사진: Unsplash의Hardik Pandya 최근에 프로젝트를 진행하면서 ViewModel에서 당연하다는 듯이 SharedFlow나 StateFlow를 사용해야 할 일이 많았습니다. private val _errorFlow = MutableSharedFlow() val errorFlow: SharedFlow get() = _errorFlow private val _uiState = MutableStateFlow(UiState.Loading) val uiState: StateFlow get() = _uiState 이렇게 아무 생각 없이 사용하다 보니, 왜 이렇게 2개로 나눠서 관리해야 하지? 라는 원초적인 질문이 생겼습니다. 그래서 이번 게시글에서는 이를 이해하기 위한 Field와 Property 그리..

article thumbnail
안드로이드의 Doze와 App Standby
Android 2023. 11. 8. 17:06

사진: Unsplash의Gregory Pappas 안드로이드는 Doze와 App Standby 이 2가지의 절전 기능을 통해, 장치가 전원과 연결되어 있지 않게 하는 방법을 제공하고 있습니다. Doze는 백그라운드 CPU 및 네트워크 활동을 지연시켜 배터리 소모를 줄입니다. App Standby는 최근에 사용하지 않은 앱의 백그라운드 네트워크 활동을 지연시킵니다. 안드로이드의 앱을 개발하다 보면, 이 2가지의 모드에서 동작해야 하거나, 동작할 필요가 없을 때에 동작하지 않게 하는 등의 설계를 해야할 때가 있습니다. 그래서 이 2가지의 절전 기능을 알아보고 공부해보고자 합니다. Doze 모드 핸드폰을 사용하지 않아서 가만히 냅두거나, 전원 버튼을 누르면 핸드폰은 Doze 모드가 됩니다. Doze 모드에서는..

article thumbnail
코틀린 리플렉션과 애노테이션 그리고 함수 참조
Android/Kotlin 2023. 11. 5. 18:44

사진: Unsplash의Elisa Photography 현재 프로젝트를 진행하면서 함수 참조를 사용해야 할까??라는 궁금증이 생겼습니다. 리플렉션은 최대한 사용을 지양해야 한다는 생각을 가지고 있었는데, 참고하고 있는 다른 Github에서 함수를 함수 참조로 사용하는 것을 보고, 내가 가지고 있던 생각이 잘못되었고 생각했습니다. 그래서 이번 게시글에서 코틀린의 리플렉션에 대해 자세히 알아보고, 함수 참조와 무엇이 다른가에 대해 알아보려고 합니다. 참고: 이 게시글에서는 각각에 대한 사용법을 다루고 있지는 않습니다. 리플렉션(Reflection)이란? 리플렉션은 프로그램이 런타임에서 자체 소스 코드를 내부 검사해, 클래스의 정보를 조작할 수 있도록 하는 기능입니다. 리플렉션에 대해 이해하기 위해서는 JVM..

article thumbnail
안드로이드에서 Context를 얻을 수 있는 다양한 방법
Android 2023. 11. 3. 18:15

사진: Unsplash의Anne Nygård 안드로이드에서 Context를 얻을 수 있는 방법은 생각보다 많습니다. 다만 모두가 다 같은 Context를 말하는 것은 아닙니다. 프래그먼트에서 액티비티의 Context에 접근할 때, 왜 캐스팅을 해야만 Context를 사용할 수 있을까? 란 의문점에서 이번 게시글에서 정리해보고자 합니다. 액티비티에서 Context를 얻는 방법 액티비티에서 직접 Context 얻기 - `this` Context가 필요한 곳이 액티비티라면 Context을 얻을 수 있는 가장 간단한 방법은 `this`입니다. 이것이 어떻게 가능한 지는 액티비티의 상속 구조를 살펴보면 알 수 있습니다. 액티비티는 추상 클래스인 Context를 구현한 ContextImpl 클래스를 내부적으로 이용..

article thumbnail
안드로이드가 화면을 그리는 방법을 제대로 알아보기
Android 2023. 10. 25. 17:20

사진: Unsplash의Anna Kolosyuk 우리는 안드로이드 개발을 하면서 XML을 통해 화면을 그리고 이를 사용해 왔습니다. 그런데 이게 어떤 과정으로 어떻게 이뤄지는지 생각해본적은 없는것 같습니다. 그래서 이번 게시글에서 안드로이드가 화면을 어떻게 그리는지 알아보고자 합니다. 안드로이드 프레임워크의 요청 안드로이드의 프레임워크는 Activity가 포커스를 받을 때, 레이아웃을 그리도록 Activity에 요청합니다. 안드로이드 프레임워크에서는 알아서 그리기 절차를 처리하지만 Activity에서는 레이아웃 계층 구조의 루트 노드를 제공해야 합니다. 루트노드는 `setContentView()` 메서드를 통해 제공합니다. 그렇기 때문에 무의식적으로 안드로이드를 개발하면서 아래와 같이 코드를 작성하고 루..

article thumbnail
Compose의 Layout 단계
Android/Compose 2023. 10. 24. 15:47

JetPack Compose에 대한 이해 안드로이드 개발을 하면서 Compose를 사용하지 않는 것은 이제는 많이 뒤져치는 것 같습니다. 그렇기에 Compose를 제대로 공부해보고 있습니다. 다만 누가 "Compose에 대해서 이해하고 있느냐?" 라고 everyday-develop-myself.tistory.com 위의 게시글에서 Compose는 상태(State)를 UI로 변환하는데 3단계로 진행된다고 설명했습니다. 이번 게시글에서는 저번 게시글에서 설명했던 Composition 단계에 이어서 Layout 단계에 대해 설명하고자 합니다. 이 게시글의 내용은 아래의 영상에서 참고하였습니다. Layout 단계 Composition 단계에서는 composable 함수를 실행하고 다양한 상태의 여러 가지 UI ..

article thumbnail
클린 아키텍처와 안드로이드 권장 멀티 모듈 적용하기 (3)
Android 2023. 10. 8. 13:25

이 게시글은 아래의 게시글에서 이어지는 내용입니다. 클린 아키텍처와 안드로이드 권장 멀티 모듈 적용하기 (2) 이 게시글은 아래의 게시글에서 이어지는 내용입니다. 클린 아키텍처와 안드로이드 권장 멀티 모듈 적용하기 (1) 도대체 이놈의 클린 아키텍처가 뭐길래 이렇게 저를 괴롭히는지 모르겠습니다. everyday-develop-myself.tistory.com Feature 이제부터는 UI에 관한 Feature 모듈을 구현해볼 예정입니다. 지금까지 만들었던 모듈들은 다 Feature 모듈에서 사용하기 위해서 만들었다고 해도 과언이 아닐것 같습니다. 그러니 지금까지 만들었던 모듈들이 어떻게 사용되는지 중점으로 보시면 좋을것 같습니다. Feature 모듈의 기능은 사실 구현하시는 내용에 따라 많이 달라질 것이..