안드로이드 7

[Android] MVP 패턴 살펴보기

안드로이드 개발 입문단계에서는, View( Activity, Fragment )에서 View의 동작과, 데이터 처리까지 모두 작성하는 방법으로 안드로이드 앱을 제작했을 것이다. 하지만 이렇게 작성하게 되면 코드 작성은 쉬울 수 있지만, 여러 사람들과 협업을 했을 때, 코드 가독성이나 관리, 로직 구현이 굉장히 까다로워진다. 또한 하나의 class에 모든 처리를 위한 수많은 코드들이 들어가게 되어 스파게티 코드로 변환될 가능성이 있다. 그리고 UI에서 모든 걸 처리하기 때문에 비즈니스 로직에 따른 UI의 변화들을 직접 개발자가 바꿔줘야 하는 까다로움이 존재한다. 이로 인해 테스트 코드의 작성이 어려워지게 되며 유지보수에 굉장히 큰 어려움이 따를 수 있다. 이러한 단점을 극복하고자 나온 패턴이 바로 MVP ..

Android 2023.02.07

[Android] ViewModel 사용법 및 예제

오늘은 안드로이드의 MVVM 패턴의 핵심이라고 할 수 있는 ViewModel에 대해 알아보려고 한다. 학습내용 ViewModel의 개념 ViewModel과 생명주기 ViewModel의 사용목적 직접 ViewModel 사용해보기 ViewModel UI관련 데이터 저장 및 UI로직을 처리 및 관리하기 위해 만들어짐 LifeCycle 패키지에 포함된 것에서 알 수 있듯이 생명주기를 고려해서 동작하도록 구현됨 ViewModel과 생명주기 View의 생명주기는 안드로이드 FrameWork에 의해 관리됨 화면 회전이나 글씨 크기 변경 등 구성 변경 발생시 View는 Destroy되고 다시 재생성 ViewModel은 View의 Lifecycle에 scoping되어 View가 완전히 종료될 때 까지 객체가 유지됨 Vi..

Android 2023.02.02

[Android] Room DB 사용법 및 예제 - Kotlin

오늘은 안드로이드의 Room을 이용해 LocalDB를 구성한 예제를 소개하려고 한다. Room에는 다음과 같은 3가지 개념이 존재한다. Database (데이터베이스) Entity ( 데이터베이스 내의 테이블 ) DAO ( 데이터베이스에 접근하는 함수. insert, update, delete 등등 ) 이 개념을 가지고 Room을 이용해 보자. 먼저, Room을 이용하기 위해선, build.gradle에 다음과 같이 추가하자. implementation 'androidx.room:room-runtime:2.2.6' kapt 'androidx.room:room-compiler:2.2.6' 그리고 Entity를 구성해보자. 다음과 같이 History라는 데이터클래스 파일을 만들고 class위에 Entity ..

Android 2023.02.02

[Android] View Binding(뷰바인딩) - Kotlin

오늘은 안드로이드의 View Binding(뷰바인딩)에 대해 알아보려고 한다. ViewBinding ViewBinding(뷰 바인딩)은 뷰와 상호작용하는 코드를 보다 쉽게 작성할 수 있는 기능이다. 뷰바인딩을 사용함으로써, 기존에 사용하던 findViewById를 대체할 수 있다. 뷰 바인딩을 이용하기 위해서는 build.gradle에 다음과 같이 명시하여야 한다. viewBinding { enabled = true } 그럼 이제 실제로 뷰 바인딩을 이용해보자. 먼저 예시에서는 메인 액티비티에서 사용을 하려고 한다. 기존에는 MainActivity와 activity_main_xml을 연결하기 위해 override fun onCreate(savedInstanceState: Bundle?) { super.o..

Android 2023.02.02

[Android] Retrofit 사용 예제 (Kotlin)

오늘은 간단한 예제를 통해, 안드로이드에서 Retrofit을 사용하는 방법에 대해 알아보려고 한다. 학습내용 Kotlin을 이용한 Retrofit 사용법 숙지 Retrofit을 이용해 인터파크 도서 api 데이터 가져오기 받아온 api 데이터를 바탕으로 안드로이드 뷰 그려보기 코틀린에서 Retrofit 사용 먼저 사용하기 전에, gradle에 코드를 추가하여 셋팅을 하자. implementation 'com.squareup.retrofit2:retrofit:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0' 그럼 본격적으로, Retrofit을 이용해 인터파크 도서 api의 데이터를 받아오자. 먼저, 이번 학습에서는 데이터를 받아오기만 ..

Android 2023.02.01

[Android] Fragment에서 ViewBinding 메모리 누수 방지

https://developer.android.com/topic/libraries/view-binding 뷰 결합 | Android 개발자 | Android Developers 뷰 결합 뷰 결합 기능을 사용하면 뷰와 상호작용하는 코드를 쉽게 작성할 수 있습니다. 모듈에서 사용 설정된 뷰 결합은 모듈에 있는 각 XML 레이아웃 파일의 결합 클래스를 생성합니다. 바인딩 developer.android.com Fragment에서 ViewBinding을 사용할 경우 메모리 누수(Memory leak)를 조심해야 합니다. 그 이유를 Fragment의 생명주기와 함께 알아봅시다. 먼저, Fragment의 생명주기를 보면 다음과 같습니다. 위 Fragment의 생명주기를 보면 onCreate 이후에 onCreateV..

Android 2022.05.02

[Android] Kotlin 기초 문법 (let, run, with, apply, also)

오늘은 안드로이드 개발 언어 중 하나인 코틀린의 기초 문법중 Scope Function에 대해 알아보겠습니다. 그리고 이 Scope Function을 자바와 비교하여 자바와 코틀린 코드간의 차이점을 알아보고, 어떻게 사용하는지 알아보겠습니다. Scope Function 코틀린 표준 라이브러리에서 제공하는, 객체의 Context 내에서 코드 블럭을 실행하는 것을 목적으로 만든 함수 let, run, with, apply, also 의 5가지가 존재 let, run, with는 람다식의 결과를 반환하며 apply, also는 컨텍스트 객체를 반환한다. let let() 함수는 호출한 객체를 이어지는 함수 블록의 인자로 전달한다. 그리고 그 함수 블록의 결과를 반환한다. 그래서 주로 객체 결과값에 함수를 호출..

Android 2022.03.13