본문 바로가기
반응형

Android9

[Android/Kotlin] Gson -> kotlinx.serialization으로 Migration하기 코다 앱에선 객체 - Json 간 변환을 Gson, 그리고 이를 Retrofit2의 Converter.Factory를 통해 진행하고 있었다. 이제 Gson을 놓아주고, kotlinx.serialization으로 Migration 하려고 한다. 모든 작업엔 이유가 필요하다. 왜 kotlinx.serialization을 사용하려 하는가? 코다 앱의 안드로이드 개발은 혼자 맡아서 진행하고 있기 때문에 그동안 이런 Migration작업에 그냥 스스로 결정해서 진행했다. 실무 프로젝트에선 어떨까? 실무 프로젝트에서 Migration하는 시나리오를 상상하여 나름 과정을 정리해봤다. 1. 문제점 발견, 기술부채 확인 2. 해결 방안 생각 a. Migration 비용 b. Migration으로 얻는 이득 c. 도입할 .. 2022. 12. 15.
[Android/Kotlin] Retrofit2은 어떻게 Interface의 구현 없이 사용할 수 있을까? 제가 가진 의문과 생각을 정리한 글입니다~! 틀린 내용이 있다면 알려주세요 :) TL;DR - 프로그래머는 Interface에 추상적인 API 함수들을 Retrofit Annotaion과 함께 정의해둔다. - Retrofit.create(Class) 함수에 정의한 Interface의 Java Class 타입을 넘긴다. 반환 값은 해당 Interface의 구현체이다. - 우리는 Interface의 구현체 내용을 작성하지 않았다. 이는 Retrofit이 담당한다. - Java의 Reflection API에서 제공하는 newProxyInstance() 메서드를 이용해 동적으로 Proxy 인스턴스를 만든다.(Dynamic Proxy) - 이 Proxy Instance는 우리가 정의한 Interface의 구현체이.. 2022. 12. 11.
[Android/Kotlin] Coroutine은 왜 Light Thread이고 어떤 식으로 동작할까? 제가 가진 의문과 생각을 정리한 글입니다~! 틀린 내용이 있다면 알려주세요 :) Coroutine이란? Coroutine은 협력형 멀티 태스킹과 루틴을 통해서 구조화된 동시성을 구현하는 것이다. 협력형 멀티태스킹? 우선 Coroutine은 비선점형 스케쥴링이다. 비선점형이란 멀티태스킹의 각 작업을 운영체제가 강제로 중단시키고 다른 작업을 실행하게 할 수 없는 것을 말하는데, 그럼에도 불구하고 Coroutine이 여러 작업을 교체하며 수행할 수 있는 이유는 각 Coroutine들이 자발적으로 CPU 자원을 포기하며(yield) 여러 Coroutine이 협력적으로 실행을 주고받으면서 작동하기 때문이다. 구조화된 동시성? Coroutine은 CoroutineScope을 제공해주는데, 이 스코프 내에 Corou.. 2022. 9. 19.
[Android/Kotlin] Jetpack Navigation -BottomNavigationView, Actionbar (feat. Multiple BackStack) Navigation - ActionBar Navigation-ActionBar-Label Navigation - BottomNavigationView Navigation - MultipleBackStack Navigation - safe-args Before 2022.04.28 - [Android] - [Android/Kotlin] Navigation으로 Fragment 관리하기 2022.04.18 - [Android] - [Android/Kotlin] Jetpack Navigation이란? 0. 요구사항 3개의 탭(BottomNavigationView)에 각 프래그먼트를 연결하고, 프래그먼트마다 ActionBar에 다른 Label을 띄워주고, 첫 번째 프래그먼트가 아니라면 2022. 9. 12.
[Android/Kotlin] Retrofit2(+Coroutine)은 왜 Main Thread에서 사용해도 될까? 제가 가진 의문과 생각을 정리한 글입니다~! 틀린 내용이 있다면 알려주세요 :) 💁‍♂️??? Retrofit2과 Coroutine은 Android 프로젝트에 빠지지 않는 조합이다. 그런데 혹시, ViewModel에서 Retrofit의 API 함수를 호출할 때 Thread를 바꾸고 있진 않은가? 처음 예제를 짜 볼 땐 당연히 Networking 작업이니까 IO Dispatcher로 바꾸어주고 뿌듯해했다. 당연히 Room이나 Retrofit2같은 무거운 작업은 Main-Safety하게 해야 하지 않나? Main Thread에서 호출했다가 화면 버벅거리면 어떡해?? 뭐 코루틴이야 일반적으로 호출자 스레드를 블락하지 않지만, Room이나 Retrofit2 같은 무거운 작업은 다른 Thread에서 작업하는 게 .. 2022. 8. 10.
[Android] MVC, MVP, MVVM GOAL MVC에 대한 이해 MVP에 대한 이해 MVVM에 대한 이해 디자인 패턴? 디자인 패턴이란 소프트웨어 공학에서 특정 문맥에 공통적으로 발생하는 문제에 대해 재사용이 가능하게 만들어 놓은 해결책으로, 각각의 장단점이 다르기 때문에 상황에 따라서 맞는 디자인 패턴을 사용할 수 있다. 이러한 디자인 패턴의 종류는 굉장히 많다. GoF에 의해 생성, 구조, 행위 패턴으로 구분한 디자인 패턴들이 있다. (싱글톤, 옵저버, 어댑터 등이 이에 해당한다.) 객체지향 프로그래밍에서 좋은 애플리케이션 설계를 위해서는 SOLID 원칙, 클린 아키텍처 등 다양한 지식을 요구한다. 오늘은 안드로이드에서 MVC, MVP, MVVM 디자인 패턴(아키텍처 패턴)에 대해서만 정리한다. 내용은 [아키텍처를 알아야 앱 개발이 보.. 2022. 7. 12.
[Android] :app:kaptDebugKotlin 에러, m1 맥북 Room 라이브러리 에러 윈도우에서 만든 프로젝트를 맥북으로 옮기면서 생긴 에러인데, Execution failed for task ':app:kaptDebugKotlin'. > A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$Ka[]ptExecutionWorkAction > java.lang.reflect.InvocationTargetException (no error message) 이 에러가 가장 상단에 있어서 이 키워드를 중심으로 검색하다 보니 계속 삽질만 했다! 그러다 싸피 같은 반이시자, 같이 스터디하는 분들께 여쭤봤는데 같은 에러를 겪어서 해결하신 분이 있더라. 에러를 밑으로 쭉 내려보면 Caus.. 2022. 4. 29.
[Android/Kotlin] Navigation으로 Fragment 관리하기 Navigation으로 Fragment 이동 관리하기 Fragment 간 데이터 이동은? 백 스택 관리는? Before 2022.04.18 - [Android] - [Android/Kotlin] Jetpack Navigation이란? [Android/Kotlin] Jetpack Navigation이란? Jetpack Navigation이란? Jetpack Navigation이란? 네비게이션이란 하나의 화면에서 다른 화면으로 이동하는 것을 말한다. 기존에는 intent나 fragment Transaction으로 네비게이션(화면 이동)을 구현하였는데,.. ongveloper.tistory.com 0. 요구사항 하나의 액티비티에 프래그먼트 A, B가 있다. 프래그먼트 A의 RecyclerView의 Item에 .. 2022. 4. 28.
[Android/Kotlin] Jetpack Navigation이란? Jetpack Navigation이란? Jetpack Navigation이란? 네비게이션이란 하나의 화면에서 다른 화면으로 이동하는 것을 말한다. 기존에는 intent나 fragment Transaction으로 네비게이션(화면 이동)을 구현하였는데, 화면이 많아지면 네비게이션은 점점 복잡해진다. 이러한 네비게이션을 Jetpack 라이브러리에 Navigation 컴포넌트를 이용하여 쉽게 구현할 수 있다. (이하 Navigation) 주요 기능 Simplified setup for common navigation patterns Handles backstack Automates fragment transactions Type safe argument passing Handles transition anima.. 2022. 4. 18.
반응형