본문 바로가기

Android/AAC

(9)
[Android] AAC (Android Architecture Components) 란 ? (Feat. ViewModel) 지금까지 AAC에 대한 카테고리로 글을 작성한 것들이 있는데, 막상 생각해보면 AAC에 대해서 명확하게 인지하지 못하고 이것이 AAC다 라는 것만 보고 이전 글을 작성하였다. 따라서 AAC가 무엇인지, AAC에서 필자가 헷갈렸던 부분에 대해서 한번 정리하고 넘어가고자 한다. 우선, AAC가 무엇인가 ? AAC는 Android Architecture Components의 약자로, 테스트와 유지보수가 쉬운 앱을 디자인할 수 있도록 돕는 라이브러리의 모음이다. 쉽게 말해서 라이브러리 모음이라고 할 수 있다. Google I/O 2017에서 새로운 라이브러리를 AAC로 묶어서 발표를 하여 AAC라는 것이 사용되게 되었고, Google I/O 2018에서 Android Jetpack을 발표할 때는 Jetpack의..
[Android] AAC Navigation + BottomNavigationView 사용 방법. 필자가 저번에 AAC Navigation을 사용하여 Fragment 간의 이동을 구현한 예제를 만들어 봤었다. 해당 예제에서는 간단한 버튼을 만들고, 버튼을 통해서 Fragment를 변경하도록 구현을 했었는데, BottomNavigationView를 사용하여 Fragment 를 변경하고자 하니 정상적으로 동작이 되지 않았다. 따라서, AAC Navigation과 BottomNavigationView를 같이 사용하는 방법에 대해서 작성해볼까 한다. 글을 작서하기 앞서, AAC Navigtation에 대한 기본적인 사용 방법은 해당 게시글에서 확인하길 바란다. https://heegs.tistory.com/63 [AAC] AAC Navigation 사용 실전 압축 정리 클린 아키텍처 예제를 작업 한 이후, ..
[Android] Jetpack DataStore 실전 압축 정리 Preference 가 API level 29 부터 deprecated 가 되었다. 그래서 jetPack DataStore 를 사용하라고 한다. API 29 부터 deprecated 된것이지만 필자는 이것을 최근에야 알았다. 따라서, DataStore 에 대해서 알아보고자 한다. 우선, DataStore 는 무엇인가? 프로토콜 버퍼를 사용하여 Key-Value 쌍 또는 유형이 지정된 객체를 저장할 수 있는 데이터 저장소 솔루션 이다. 또한, Preference DataStore, Proto DataStore 의 2가지 존재가 존재한다. Preference DataStore : 기존에 Preference 와 마찬가지로, Key 를 사용하여 데이터를 저장하고, 가져온다. Proto DataStore : 사용..
[Android] AAC Navigation 사용 실전 압축 정리 클린 아키텍처 예제를 작업 한 이후, 다양한 기술들을 적용시켜보고 있던 와중, Fragment 간의 이동을 아주 편리하게 도와주는 AAC Navigation 이 있길래 사용해보있다. AAC Navigation 에 대한 개념 정리글은 상당히 쉽게 찾아볼 수 있는 관계로, 필자가 공부하고 예제를 수정하면서 이해한 대로 정리해 보려고 한다. 우선, Navigation 을 사용하는 이유는 여러가지가 있겠지만, 필자가 생각하는 큰 이유는 다음과 같다. Fragment 간의 이동 시 안전하게 데이터 전달 가능하다. Fragment 간의 이동 시 쉽게 Animation 을 넣고, 이동이 가능하도록 해준다. Stack 관리를 편하게 해준다. GUI를 통해 쉽게 Flow 를 파악할 수 있게 해준다. 이것들 외에도 많은 ..
[Android] 데이터 바인딩 어댑터 (Data Binding Adapter) 사용 방법 필자가 예전에 DataBinding 관련한 공부를 진행하면서 기본적인 사용 방법에 대해 간단히 작성해 둔 게시글이 있다. 이번에 클린 아키텍처 관련 예제를 작성하다 데이터 바인딩을 사용한 조금 더 심화(?)된 방법으로 사용하고 있는 것을 보고 정리겸 간단하게 사용법을 작성해 보려고 한다. * 2020.06.15 - [AAC] - [DataBinding] 데이터 바인딩 기본 사용 방법 [DataBinding] 데이터 바인딩 기본 사용 방법 DataBinding 적용 최소 사항 Android 2.1 (API 7, Android Nougat) 이상 안드로이드 누가의 경우, 19년 10월을 기준으로 지원 중단. 갤럭시 S6이상의 기기에서 사용 가능. Android Plugin for Gradle 1.5.0-al..
[Android] Room 라이브러리 Room Library AAC 중 하나 SQLite DB를 보다 쉽게 사용할 수 있도록 도와주는 ORM(Object Relational Mapping) 라이브러리 Room의 특징 컴파일 도중 SQL에 대한 유효성 검사 상용구 코드(Boiler Plate Code) 없이 매핑 가능 LiveData와 RxJava의 Flowable을 위한 observation으로 생성하여 동작 가능. Room의 구성 요소 Database : 데이터 베이스 객체. 객체를 생성하는 비용이 크기 때문에 Singleton으로 구현하는 것이 좋다. Entity : Database 내의 테이블 Dao(Data Access Object) : 데이터 접근 객체. DB를 통해 수행할 작업(CRUD)을 함수로 정의한 클래스로 interface..
[Android] ViewModel 기본 개념 ViewModel ViewModel이란 Android Jetpack의 구성요소 중 하나. MVVM(Model - View - ViewModel) 디자인 패턴으로부터 파생됨. AAC ViewModel 이라고 부르기도 한다. ViewModel의 특징 라이프 사이클을 고려하여 UI 관련된 데이터를 저장, 관리하기 위해 설계. 화면 전환과 같이 설정이 변경되는 상황에서도 Data를 유지시킨다. Activity가 끝날 때까지 사라지지 않고, View의 생명주기와 별개로 흘러간다. ViewModel은 Activity 생명주기 외부에 존재하기 때문에 UI 컨텍스트를 ViewModel에 저장한다면 Memory Leak을 발생시키는 원인이 될 수 있다. ViewModel의 생명주기 일반적으로 onCreate()를 처음 ..
[Android] LiveData 기본 개념 LiveData 개요 LiveData는 Data의 변경을 식별할 수 있는 데이터 홀더 클래스. 일반 클래스와 달리 LiveData는 수명 주기를 인식하며, 생명 주기가 활성화되어있는 상태에서만 Observer를 업데이트한다. LiveData 객체에 LifecycleOwner와 함께 옵저버를 등록할 수 있다. LiveData는 Observer가 STARTED, RESUMED 상태일 때 활성화되어있는 상태로 인식한다. LiveData가 가지고 있는 데이터에 변화가 일어날 경우, Observer 객체에 변화를 알려주어 onChanged() 이벤트를 발생시킨다. LiveData는 2개의 함수를 가지고 있다. onActive() : 활성화된 Observer수가 0에서 1로 바뀔 때 호출. onInactive() ..