안드로이드/정리

    [Android] 프로젝트 템플릿에 관해...

    프로젝트 템플릿의 필요성 기존과 같이 Activity 혹은 Fragment에 거의 모든 코드를 작성하는 방식은 코드의 가독성을 떨어뜨림 유지보수에도 어려움이 많음 역할에 따라 Class를 분리하여 가독성과 재사용성을 높일 필요가 있음 프로젝트 템플릿을 사용하면 일관성 있는 프로젝트 구성에 효과적 템플릿 구성은 이런 식으로... 네트워크 통신과 화면 갱신 부분들을 구분지어 코드 작성 중복 사용했던 코드들은 베이스 코드를 작성해 상속받는 형태를 사용 config, src, util 폴더 3가지로 나누는 템플릿 config 설정하는 것 전체 프로젝트의 근간이 되는 base 코드들이 들어감 ApplicationClass에는 전역변수로 선언한 인스턴스들을 구성하여 프로젝트 전체에서 동일하게 사용 BaseActiv..

    [Android] Room에 관해...

    Room SQLite를 추상화한 객체이자 ORM(Object Relational Mapping)에 해당됨 객체를 사용하듯 DB를 사용할 수 있게 해줌 Room의 주요 Component 1. Entity : 데이터베이스 안에 있는 테이블 2. Database : DAO 객체를 제공해 데이터베이스를 이용할 수 있는 Access point 3. DAO(Data Access Object) : 데이터베이스에 접근하는 메서드가 있는 오브젝트 3개의 주요 룸 객체를 생성하고 정의하면 나머지는 라이브러리가 알아서 처리 JetPack의 ViewModel과 LiveData와 함께 쓰이도록 설계되었으며 이들과 같이 사용. Entity DB의 테이블과 구성요소를 표현한다. Annotation --- @Entity(tableN..

    [Android] LiveData에 관해...

    LiveData :: 데이터를 저장하고 변화를 관찰할 수 있는 객체 특징 애플리케이션의 LifeCycle 인식 Activity, Fragment, Service, Component의 생명주기 따름 데이터의 변경을 활성화된 관찰자(Observer)를 통해 알림 LifeCycleOwner LiveData가 따르는 생명주기(Owner)의 생명주기가 STARTED, RESUME 상태인 경우만 Observer를 Active 상태로 간주한다. 코드를 통합해 Observer 객체에 UI를 업데이트할 수 있다. LifecycleOwner 구현체가 DESTROYED 상태가 되면 자동으로 Observer는 내부에서 제거 생명 주기에 따른 메모리 누수 걱정이 필요 없게 됨 LiveData는 특히 ViewModel에서 사용하..

    [Android] Jetpack에 관해...[ Databinding ]

    Databinding 선언적 형식으로 레이아웃 UI 구성요소를 앱의 데이터 소스와 결합할 수 있는 지원 라이브러리 Kotlin Extension으로 findViewById를 사용하지 않고, layout에 선언된 id를 가져올 수 있었다. 하지만 레이아웃에서 선언한 View가 코틀린 파일의 객체를 읽고 데이터를 출력해주지 않았다. 코틀린에서 직접 데이터를 View에 설정해줘야 했다. DataBinding은 코틀린에서 레이아웃을, 레이아웃에서 코틀린의 데이터를 직접 참조하는 라이브러리다. 코틀린에서 레이아웃 파일에 의존적인 부분이 많이 사라지고 MVVM 등의 패턴과 함께 사용할 수 있다. 화면에 보여줄 data class를 만든다음, layout.xml에서 data class에서 보여줄 fi..

    [Android] Jetpack에 관해... [ ViewModel ]

    Jetpack은 모든 Android 버전과 기기에서 일관되게 작동하는 코드 작성을 도와주는 라이브러리 모음이다. 젯팩은 4가지의 컴포넌트가 있다. 1. Architecture :: Data Binding, Lifecycle, LiveData, Navigation, Paging, Room, ViewModel, WorkManager 2. UI :: Animation & Transitions, Auto, TV & Wear, Emoji, Fragment, Layout, Palette 3. Foundation :: AppCompat, Android KTX, Multidex, Test 4. Behavior :: Download Manager, Media & Playback, Permissions, Notificat..