본문 바로가기

Android9

[Android] MVP 패턴 살펴보기 안드로이드 개발 입문단계에서는, View( Activity, Fragment )에서 View의 동작과, 데이터 처리까지 모두 작성하는 방법으로 안드로이드 앱을 제작했을 것이다. 하지만 이렇게 작성하게 되면 코드 작성은 쉬울 수 있지만, 여러 사람들과 협업을 했을 때, 코드 가독성이나 관리, 로직 구현이 굉장히 까다로워진다. 또한 하나의 class에 모든 처리를 위한 수많은 코드들이 들어가게 되어 스파게티 코드로 변환될 가능성이 있다. 그리고 UI에서 모든 걸 처리하기 때문에 비즈니스 로직에 따른 UI의 변화들을 직접 개발자가 바꿔줘야 하는 까다로움이 존재한다. 이로 인해 테스트 코드의 작성이 어려워지게 되며 유지보수에 굉장히 큰 어려움이 따를 수 있다. 이러한 단점을 극복하고자 나온 패턴이 바로 MVP .. 2023. 2. 7.
[Android] 코루틴(Coroutine) 사용법 및 예제 오늘 안드로이드 코틀린의 코루틴에 대해 알아보고자 한다. Coroutine vs Thread를 통해 Coroutine을 사용하는 이유 알아보기 Coroutine Dispatcher Coroutine Context Coroutine Scope Coroutine Builder + Job suspend(일시 중단 함수) Coroutine 직접 사용해보기 Coroutine vs Thread Thread Task단위 => Thread 각 작업에 Thread를 할당 각 Thread는 자체 Stack 메모리를 가지며, JVM Stack 영역 차지 Context Switching Blocking (Thread1이 Thread2의 결과가 나올 때 까지 기다려야 한다면 Thread1은 Blocking되어 사용하지 못함) .. 2023. 2. 2.
[Android] RecyclerView와 ListAdapter, DiffUtil 예제 및 정리 - Kotlin ListAdapter + DiffUtil 사용 이유 기존에는 RecyclerView의 Adapter는 RecyclerView.Adapter를 이용하여 구성하였다. 이는 RecyclerView에서 데이터가 변경되었을 경우 notifyDatasetChanged()를 사용하게 되는데 이 경우, 리스트 내의 데이터를 모두 바꾸게 된다. 따라서, 데이터가 매우 많을 경우 시간 지연이 발생하게 된다. 이러한 불편한 점을 해소하기 위해 ListAdapter + DiffUtil을 활용하게 된다. DiffUtil은 현재 데이터 리스트와 교체할 데이터 리스트를 비교하여 변경이 필요한 부분만을 뽑아내어 변경을 하기 때문에 notifyDatasetChanged() 보다 훨씬 빠른 시간내에 리스트를 변경할 수 있게 되기 때문이.. 2023. 2. 2.
[Android] ViewModel 사용법 및 예제 오늘은 안드로이드의 MVVM 패턴의 핵심이라고 할 수 있는 ViewModel에 대해 알아보려고 한다. 학습내용 ViewModel의 개념 ViewModel과 생명주기 ViewModel의 사용목적 직접 ViewModel 사용해보기 ViewModel UI관련 데이터 저장 및 UI로직을 처리 및 관리하기 위해 만들어짐 LifeCycle 패키지에 포함된 것에서 알 수 있듯이 생명주기를 고려해서 동작하도록 구현됨 ViewModel과 생명주기 View의 생명주기는 안드로이드 FrameWork에 의해 관리됨 화면 회전이나 글씨 크기 변경 등 구성 변경 발생시 View는 Destroy되고 다시 재생성 ViewModel은 View의 Lifecycle에 scoping되어 View가 완전히 종료될 때 까지 객체가 유지됨 Vi.. 2023. 2. 2.
[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 .. 2023. 2. 2.
[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.. 2023. 2. 2.