aac

    [Android] Android Architecture Components(AAC)

    구글에서 권장하는 아키텍처의 원칙은 '관심사 분리'와 '데이터 모델에서 UI 도출'이다. Activity나 Fragment와 같은 UI 기반의 클래스는 UI 및 운영체제 상호작용을 처리하는 로직만 포함되어야 한다. 위와 같은 클래스들은 최대한 가벼운 상태로 유지하여 수명 주기와 관련된 문제들을 피하고 테스트가 쉽도록 고려되어야 한다. 또한 OS가 언제든지 사용자에 의해 메모리 부족과 같은 시스템적인 조건으로 UI클래스들을 제거할 수 있기 때문에 로직의 성격에 따라 분리하여 UI클래스에 대한 의존성을 최소화하는 것이 좋다. 또한 UI는 데이터를 처리하는 모델에 의해 도출되어야 한다. 모델은 네트워크에 문제가 있거나 OS가 리소스를 확보하기 위해 앱을 제거해도 사용자의 데이터 또는 앱의 동작은 문제없이 지속..

    [안드로이드] Android Architecture Components(AAC)의 LiveData

    개요 LiveData는 Activity, Fragment, Service 등 다른 앱 구성요소의 라이프사이클을 인식하는 데이터 클래스다. 라이프사이클 인식을 통해 LiveData는 Observer 클래스로 표현되는 관찰자의 활성 상태를 구분하고 업데이트 정보를 알린다. 관찰자가 활성화가 된 상태는 STARTED 또는 RESUMED 상태를 활성 상태로 간주한다. 또한 Activity나 Fragment가 LiveData 객체를 안전하게 관찰할 수 있고, 이들의 수명 주기가 끝나는 즉시 수신 거부되어 쓸데없는 메모리 누수를 걱정하지 않아도 되므로 유용하다. 장점 1. UI와 데이터 상태의 일치 보장 LiveData는 데이터가 변경됨과 동시에 Observer 객체에 통지함. 데이터 변경시 Observer가 대신..

    [안드로이드] Android Architecture Components(AAC)의 ViewModel

    개요 ViewModel 클래스는 수명 주기를 고려해 UI와 관련된 데이터를 저장하고 관리한다. ViewModel 클래스를 사용하면 화면 회전과 같은 인스턴스 제거 → 재생성 과정을 거쳐도 데이터를 유지할 수 있다. 꼭 ViewModel로 데이터를 유지시키지 않아도 대안은 있긴 하다. 예를 들면 앱의 Activity들 중 하나에 사용자 목록이 포함되어 있는데, 구성이 변경되어 Activity가 다시 생성되면 새 Activity가 사용자 목록을 다시 가져와야 하는데, 데이터가 단순한 경우 Activity의 onSaveInstanceState() 메소드를 사용하여 onCreate()의 번들에서 데이터를 복원할 수 있다. 하지만 이 방법은 사용자 목록이나 비트맵과 같은 대용량의 데이터가 아니라, 직렬화했다가 다..