본문 바로가기

전체 글164

[RxKotlin] 2. Observable (콜드 옵저버블, 핫 옵저버블, Subject) 간결함을 위해 생략한 내용이 있으니 RxKotlin 을 처음 접한다면 지난 글을 먼저 읽는 것이 좋다. [RxKotlin] 기본 개념 (Observable 과 Observer) [RxKotlin] Observable (콜드 옵저버블, 핫 옵저버블) [RxKotlin] Single, Maybe (작성 예정) [RxKotlin] Flowable, Subscriber, 백프레셔 [RxKotlin] 연산자 [RxKotlin] 스레드 [RxKotlin] 안드로이드에 적용 1. Cold observable 우리가 지난 글에서 다루었던 Observable 은 콜드 옵저버블이다. 핫 옵저버블은 ConnectableObservable 타입을 갖는다. 그렇다면 콜드 옵저버블과 핫 옵저버블의 차이점은 무엇일까? 그것은 이미.. 2022. 2. 20.
[RxKotlin] 1. 기본 개념 (Observable 과 Observer) RxXX 는 ReactiveX 라이브러리의 각 언어별 라이브러리 이름이다. 나는 RxKotlin 을 Intelij 에서 연습하고 있다. 아래와 같이 RxKotlin 과 Coroutine 의존성을 추가하고 있다. implementation("io.reactivex.rxjava2:rxkotlin:2.4.0") implementation('org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0') RxKotlin 에 관련한 내용은 시리즈로 작성할 예정이다. RxKotlin 에 대한 글은 그래도 조금 있는 편이라 생각하지만 러닝커브가 있는 편이라 양질의 글을 찾아보기 어렵다. 영어로 공부하거나, 여러 한글자료를 읽어보고 종합시켜서 이해하거나 책을 읽어야 한다. 이 시리.. 2022. 2. 11.
[안드로이드] layout <include> 속성 정의 및 이벤트 구현하기 ※ 이 글에서 설명하는 내용은 싱글 Activity 프로젝트에 적절합니다. 22.02.27. 설명 추가 : variable 로 listener 혹은 viewModel 등을 넘겨주는 방식으로도 이벤트를 연결할 수 있다. listener 를 interface 로 만들어 ViewModel 등에서 구현하여 속성값으로 넘겨주면 된다. 하지만 ViewModel 마다 직접 구현해야 하고, 코드 중복이 생기는 것은 불가피하다. View 의 재사용이 안드로이드에서 가장 아쉬운 부분인 것 같다. React 나 Flutter 같은 경우 매우 쉽게 사용중인 ui 의 일부를 떼어내어 컴포넌트화(재사용)할 수 있다. 떼어낸 ui 가 툴바라고 해 보자. 대략 위와 같은 모습일 것이다. 페이지에 따라서 BackButton 이 없을 .. 2022. 2. 10.
[안드로이드] 리사이클러뷰 데이터 바인딩 이벤트 (RecyclerView data binding) 지난 글에서 빼먹은 부분이 있다. 리사이클러뷰에서 이벤트 리스너를 연결하는 방법인데, 지금 상태에서 무지성으로 리스너를 연결한다면 아마 bind 함수에서 하게될 것이다. 이번 글에서는 Adapter 에 ViewModel 을 받아 사용하는 방법을 알아보자. 지난 글에 이어서 설명하겠다. 이번에는 지난 번보다 짧다. 1. 이벤트 함수 구현 class MainViewModel : ViewModel() { // ... fun showToastMessage(view: View, text: String) { Toast.makeText(view.context, text, Toast.LENGTH_SHORT).show() } } 내가 실제로 코딩한 순서는 이것과 다르지만, 글에서는 컴파일 에러가 나지 않는 순서대로 진행.. 2022. 1. 27.
[안드로이드] 애플리케이션 아키텍처 안드로이드 시스템같은 저수준 아키텍처가 아닌 앱 개발 수준의 아키텍처에 관한 글이다. 안드로이드를 시작하는 사람의 프로젝트 구조 안드로이드는 처음 배우고 애플리케이션을 만들면 많은 사람들이 Activity 와 layout 을 담은 xml 파일만을 이용해 코드를 작성한다. 물론 다른 개발 경험이 많다면 그러지 않을 수도 있다. 어쨋든 이렇게 코드를 작성하다 보면 Activity 코드가 걷잡을 수 없이 커진다. ViewModel 의 분리 애플리케이션에서 중요한 것은 무엇일까? 바로 비즈니스 로직이다. 비즈니스 로직은 UI 와는 전혀 관련이 없다. Todo list 애플리케이션으로 예를 들어보자. "할 일을 저장한다." 와 같은 비즈니스 로직에 UI 와 관련된 언급이 있는가? 전혀 없다. View(GUI) 는.. 2022. 1. 23.
클린 아키텍처 https://book.naver.com/bookdb/book_detail.nhn?bid=15303798 클린 아키텍처 “살아있는 전설이 들려주는 실용적인 소프트웨어 아키텍처 원칙”소프트웨어 아키텍처의 보편 원칙을 적용하면 소프트웨어 수명 전반에서 개발자 생산성을 획기적으로 끌어올릴 수 있다. 《 book.naver.com 이 책도 필독서 중 하나이다. 근데 필독서라고 했지 필독서들이 마냥 쉬운 것은 아닌데, 이 책의 경우엔 내가 읽기에 적절했던 것 같다. 적당히 SOLID 원칙에 대해 알고 있고, MVVM 패턴과 스프링에 대한 배경 지식을 갖고 있으면 이 책을 이해하는데 무리가 없을 것 같다. 이 책을 읽고 생각나는 것 세 가지를 작성해 보았다. 경계에 대한 이야기가 많이 나온다. 경계는 어디에나 있고.. 2022. 1. 22.
[안드로이드] 리사이클러뷰 데이터 바인딩 (RecyclerView data binding) https://github.com/android/architecture-samples GitHub - android/architecture-samples: A collection of samples to discuss and showcase different architectural tools and pattern A collection of samples to discuss and showcase different architectural tools and patterns for Android apps. - GitHub - android/architecture-samples: A collection of samples to discuss and showcase... github.com 이 프로젝트를 보.. 2022. 1. 15.
[안드로이드] ViewModel 에서 이벤트 처리하는 방법 (SingleLiveEvent) MVVM 에서 View 는 xml, Activity, Fragment 등이 해당된다. ViewModel 에서는 View 에 필요한 데이터들을 갖고 있고, 데이터들을 조작하는 로직들을 갖고 있다. View 에서는 데이터들을 구독하고 있다가 변경이 감지되면 UI 를 업데이트 한다. (이 글에서는 xml, Activity, Fragment 를 모두 View 라고 부르겠다.) UI 관련된 코드가 View 에 들어간다고 해서 ViewModel 에서는 View 와 전혀 관련 없는 일을 하는 게 아니다. View 와 매우 관련있는 것이 ViewModel 이지만, View 에 의존하고 있지 않을 뿐이다. ViewModel 은 View 의 코드가 변경되어도 전혀 영향을 받지 않는다. onClick 이벤트는 어디서 구현할.. 2022. 1. 14.
[안드로이드] Retrofit 을 이용하는 6가지 방법 (수정 : 22-01-13) ※ 2023-10-15 Retrofit 관련된 새로운 글을 작성했습니다. 해당 글을 읽어주시길 바라며, 이 글은 더 이상 읽지 않을 것을 권장합니다. ※ 주의사항(2023-06-19 코멘트 추가) 이 글은 과거에 작성된 글로 조금 잘못된 지식을 설명하고 있습니다. 곧 수정할 예정이지만 혹시 그 전에 읽는다면 반드시 아래 내용을 유의하여 읽어주세요. viewModel에서는 코루틴 스코프를 직접 만드는 것이 아닌 viewModelScope를 이용해야 합니다. viewModelScope는 Main 스레드를 이용합니다. Retrofit2의 serviece를 만들 때 즉, api interface를 정의할 때 단순히 fun 앞에 suspend 키워드를 붙여주면 별도의 Adapter를 정의하지 않고 코루틴을 이용하.. 2022. 1. 10.