Android(8)
-
[Android] 좋은 View, 좋은 Component 를 설계하는 방법과 마음가짐
멋진 설계를 가진 것은 프로그램이던 다른 어떤 것이건 감탄을 자아냅니다. 얼마 전에 개관 30주년을 맞은 환기미술관을 다녀왔는데요. 마침 설계도가 전시되어 있기도 했고, 박물관 곳곳에 왜 이렇게 박물관이 설계되었는지 설명이 잘 되어있어서 더욱 보는 재미가 있었습니다. 개발자는 프로그램을 설계합니다. 좋은 프로그램을 설계하고 싶은 것은 자연스러운 욕심일 것입니다. 아마 이 글을 읽으시는 분께서는 이런 갈증이 있어서이지 않을까 생각해봅니다. 안드로이드 개발에 있어서도 좋은 뷰는 어떻게 설계해야 하고, 왜 그렇게 되었는지 설명하는 글을 쓴다면, 읽는 누군가가 재미를 느낄 수 있지 않을까? 하는 작은 생각에서 이 글을 작성하게 되었습니다. MVC, MVP, MVVM, MVI 까지… 정말 다양한 아키텍처가 있습니..
2022.10.06 -
[Androidx / Jetpack] Room 개요 및 사용법
Room (08/25) 앱 데이터 및 파일 > 로컬 데이터베이스에 데이터 저장 > 개요, 개체를 사용하여 데이터 정의 ... Google codelab 예제코드 (Android Room with a View - Java) 도 있음 https://codelabs.developers.google.com/codelabs/android-room-with-a-view/#0 Room을 사용하여 로컬 데이터베이스에 데이터 저장 개요 Room은 SQLite에 대한 추상화 레이어를 제공하여 원활한 데이터베이스 액세스를 지원하는 동시에 SQLite를 완벽히 활용합니다. 상당한 양의 구조화된 데이터를 처리하는 앱은 데이터를 로컬로 유지하여 대단한 이점을 얻을 수 있습니다. 가장 일반적인 사용 사례는 관련 데이터를 캐싱하는 ..
2020.08.30 -
[Androidx / Jetpack] ViewModel 개요 및 사용법
ViewModel 개요 Android Jetpack의 일부 ViewModel 클래스는 수명 주기를 고려하여 UI 관련 데이터를 저장하고 관리하도록 설계되었습니다. ViewModel 클래스를 사용하면 화면 회전과 같이 구성을 변경할 때도 데이터를 유지할 수 있습니다. Android 프레임워크는 액티비티 및 프래그먼트와 같은 UI 컨트롤러의 수명 주기를 관리합니다. 프레임워크는 특정 사용자 작업이나 완전히 통제할 수 없는 기기 이벤트에 대한 응답으로 UI 컨트롤러를 제거하거나 다시 만들도록 결정할 수 있습니다. 시스템에서 UI 컨트롤러를 제거하거나 다시 만들면 컨트롤러에 저장된 일시적인 모든 UI 관련 데이터가 손실됩니다. 예를 들어 앱은 액티비티 중 하나에 사용자 목록을 포함할 수 있습니다. 구성 변경을 ..
2020.08.30 -
[Androidx / Jetpack] LiveData 개요 및 사용법
LiveData 개요 LiveData는 관찰 가능한(observable) 데이터 홀더 클래스입니다. 일반 observable과 달리 LiveData는 수명 주기를 인식합니다. 즉 액티비티, 프래그먼트 또는 서비스와 같은 다른 앱 컴포넌트(구성요소)의 수명 주기를 고려합니다. 이러한 수명 주기 인식을 통해 LiveData는 활성 수명 주기 상태에 있는 앱 구성요소 observers(관찰자)만 업데이트합니다. LiveData is an observable data holder class. Unlike a regular observable, LiveData is lifecycle-aware, meaning it respects the lifecycle of other app components, such as..
2020.08.30 -
의존성 주입 - Dagger, 모듈과 컴포넌트
Review Module은 Component에 연결되어 의존성 객체를 생성한다. Component는 연결된 Module을 이용하여 의존성 객체를 생성하고, 요청받은 인스턴스에 생성한 객체를 주입한다. 모듈 : class, 컴포넌트에 의존성을 제공함, 컴포넌트에 연결, @Module은 의존성을 제공할 클래스에 붙이고, @Provides는 의존성을 제공하는 메서드에 붙임. 주입할 내용이 여기에 작성됨. 컴포넌트 : interface, 바인드(연결)된 모듈을 이용해 의존성 객체를 생성, @Component에서 어떤 모듈과 바인드(연결)될지 설정할 수 있음[ ex, @Component(modules = MyModule.class) ] 결과 : Activity에서 MyComponent myComponent = D..
2020.08.17 -
의존성 주입 - Dagger 기초 예제
Dagger를 처음 접했을 때, 너무 많은 용어가 혼재되어있어 도무지 감을 잡기가 어려웠다. 가장 기초가 되면서 중요한 용어를 두가지만 꼽자면, 바로 Component와 Module을 꼽을 수 있다. Module은 Component에 연결되어 의존성 객체를 생성한다. Component는 연결된 Module을 이용하여 의존성 객체를 생성하고, 요청받은 인스턴스에 생성한 객체를 주입한다. 그럼 MyModule이라는 것을 먼저 만들어서 MyComponent에 특정 String(여기선 "Hello World : 의존성 주입 성공!")을 주입해 보도록 하자. 직접 해보기 app/build.gradle apply plugin: 'com.android.application' android { compileSdkVer..
2020.08.17