Android 21

[Android] MVVM + Coroutine + Retrofit

MVVM + Retrofit + Repository의 전체적 구조 MVVM은 뷰 관련 로직이 ViewModel에 종속되는 패턴이다. 즉 UI 관련 데이터가 ViewModel에 있고 뷰는 이 뷰모델을 관찰(observing)하면서 변화하는 내용들을 업데이트한다. ViewModel은 뷰에 사용되는 데이터를 요청하면, Repository는 Room (내부 Database) 혹은 Retrofit이 네트워크를 통해 통신한 내용을 ViewModel에 전달해주는 방식이다. 그래서 이 내용을 Retrofit을 통해 API 통신하는 부분에 적용하면 다음 절차로 진행된다! 1. 레트로핏 인터페이스를 생성하고, API를 통신한 결과를 response 모델로 반환하도록 해둔다. 2. 해당 인터페이스를 통해 데이터를 가져오는 ..

Android 2021.11.03

[Android] Reactive Programming, Rxjava/Rxkotlin/RxAndroid이란?

Reactive Programming이란? 주변환경과 끊임없이 상호작용하면서, 환경이 변하면 이벤트를 받아 동작하는 프로그래밍 Q. 왜 사용하는가? → 비동기 프로그래밍이랑 밀접한 관련이 있음 메인스레드에서 데이터를 불러온다거나, 서버와 통신한다거나 등의 무거운 작업은 별도의 스레드로 분리하여 실행해야함. 즉 처리가 다 될때까지 기다리는것이 아닌 비동기 작업을 해주어야함 AsyncTask로도 가능하지 않은가? → AsyncTask는 공식적으로 deprecated됨. Q. 명령형 프로그래밍과 어떻게 다른가? 명령형 프로그래밍은 코드가 작성된 순서대로 실행됟는거고 리액티브 프로그래밍은, 데이터의 흐름을 먼저 정의하고 데이터가 변경되었을때 연관되는 함수나 메소드가 그때그때 업데이트되는 방식 따라서 손쉬운 비동..

Android 2021.10.19

[Android] MVVM, LiveData, ViewModel, Databinding 프로젝트에 적용

build.gradle val lifecycle_version = "2.4.0-rc01" // ViewModel implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version") // LiveData implementation("androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version") https://developer.android.com/jetpack/androidx/releases/lifecycle?hl=ko#declaring_dependencies Lifecycle | Android 개발자 | Android Developers Lifecycle 수명 주기 인식 구성요소는..

Android 2021.10.19

[Android] MVVM / LiveData, ViewModel, Databinding / AAC - 개념

MVVM 패턴이란? Model - View - ViewModel 이 각각의 역할을 분리하여 가독성과 재사용성을 높인 디자인 패턴 MVC 패턴과 어떤 차이가 있는가? 안드로이드의 초기 프로젝트 디자인 패턴은 MVC 패턴(Model - View - Controller)이다. MVC 패턴에서는 Controller가 짱이다. 거의 모든 역할을 다한다! 그리고 안드로이드에서 Controller는 Activity에 해당한다. MVC 패턴에서의 Controller는 사용자의 액션과 요청을 가장 먼저 받아서 Model과 View에 작업 처리를 명령하는데, Activity는 View이자 사용자의 요청을 처리하는 Controller이기 때문에 액티비티가 굉장히 무거워지는 현상이 발생한다. MVVM 패턴은, 뷰와 컨트롤러가..

Android 2021.10.15

[Android/Kotlin] 자주쓰는 Retrofit 인터페이스 정리

1) Body가 없는 API // 관심 카테고리 조회 @GET("/users/categories") fun getPickedCategoryList(): Call 2) Body가 있는 API //사용자 카테고리 수정 @PATCH("/users/categories") fun patchCategory(@Body params: PatchCategoryRequest): Call 3) Query, Path Variable //메인 최신순, 인기순 피드 @GET("/categories/{categoryName}/tips") fun getPreviewFeed(@Path("categoryName") categoryName:String, @Query("order") order:String): Call

Android 2021.08.20

[Android] ConstraintLayout

ConstraintLayout을 도입한 이유는 무엇인가? 왜 사용하는가? 기존에서 많이 사용하는 RelativeLayout과 LinearLayout을 사용해서 뷰를 구성하면, 뷰를 중첩해서 구성하는 경우가 많았는데 이러한 중첩 구조는 성능을 좋지 않게 만들 뿐더러, 유지보수할 때에도 어려움이 많았음 ConstraintLayout은 뷰의 중첩 구조를 개선하여 단순하게 제약조건만으로 뷰를 구성할 수 있도록 함으로써 성능면에서 효율적임 ConstraintLayout 기능 상위 요소 포지셔닝 제약을 상위 요소의 왼쪽으로 지정하고 여백(margin)을 사용하여 가장자리로부터의 거리를 정의 위치 순서 지정 가로 또는 세로로 두 보기가 표시되는 순서를 정의 정렬 보기의 가장자리를 다른 보기의 가장자리에 맞게 정렬합니..

Android 2021.06.19

[Android] Rxjava / Reactive Programming 개념

Reactive Programming - reactive : 반응형 -> 비동기로 반응하여 실행 - 데이터의 흐름을 먼저 정의하고, 데이터가 변경되었을때 연관되는 수식이나 함수가 업데이트되는 방식 - ex) 엑셀에서 값을 변경했을 때 자동으로 변경된 값이 반영되는것 - 명령형 프로그래밍 : 변경이 발생했다는 통지를 받으면(pull) 그때 새로 계산함 VS 반응형 프로그래밍 : 변경된 데이터를 밀어줌(push) RxJava - 자바로 리액티브 프로그래밍을 할 수 있는 라이브러리 - 함수형 프로그래밍과 같이 사용(람다 표현식) - 콜백을 사용하지 않음!!! Reference 12bme.tistory.com/570 [RxJava] RxJava 프로그래밍(1) - 리액티브 프로그래밍 서버 다수와 통신하게 되면 ..

Android 2021.03.25
반응형