반응형

Mobile/Android(Kotlin) 45

[Android] Shared Preferences. 앱 내 간단한 데이터 저장에 사용.

목차 Shared Preferences Shared Preferences 객체에 접근 Shared Preferences에 쓰기 Shared Preferences에서 값을 삭제하기 Shared Preferences에서 읽기 결론 Shared Preferences 크기가 크지 않은 비교적 간단한 데이터를 key-value 형태로 저장할 수 있게 도와주는 라이브러리입니다. (Shared Preferences API와 Preference API는 다릅니다.) Shared Preferences는 애플리케이션 내부에 저장됩니다. 따라서 앱을 지우거나 데이터를 삭제하면 Shared Preferences에 저장된 값 또한 사라지게 됩니다. Shared Preferences는 해당 경로에 .xml 형태로 저장됩니다. d..

[Android] Dive into concept of Configuration. (App Lifecycle, 화면 전환 등)

목차 Configuration 소개 Activity Recreate 상태 보존 생성 제한 결론 Configuration 소개 Configuration 클래스는 응용 프로그램 리소스에 영향을 줄 수 있는 모든 장치 구성 정보를 설명한다. 여기에는 사용자 지정 옵션(화면 스케일, 로케일, 입력 모드, 화면 방향 전환, 화면 크기와 같은 장치 구성 정보가 포함된다. val config = resources.configuration와 같이 접근할 수 있다. 일부 기기 구성은 앱이 실행되는 동안 변경될 수 있다. 여기에는 다음이 포함되지만 이에 국한되지 않는다. 앱 디스플레이 크기 화면 방향 글꼴 크기 및 두께 언어 어두운 모드와 밝은 모드 비교 키보드 사용 가능 여부 구성 변경은 대부분 사용자 상호작용으로 인해..

[Android] Dive into concept of Android Context. (Application Context and Context)

목차 Context 정의 Context Tree Activity Context, Application Context Activity Context Application Context Context 사용 Context 사용과 메모리 누수 1. static 변수에 ActivityContext 사용 2. singleton 객체에서 ActivityContext 참조 Context 정의 애플리케이션 환경에 대한 전반적인 정보를 담고 있는 인터페이스이다. 여기서 전반적인 정보란, 애플리케이션의 리소스 파일 혹은 View에 대한 정보 등을 포함한다. Context에 쓰임은 주로 activityContext, applicationContext와 같이 사용된다. Context Tree Context는 abstract c..

[Android] Support different screen size. (큰 화면, 작은 화면 사이즈 대응)

이 글은 Compose를 사용하고 Bottom Navigation을 사용할 때 화면 사이즈에 대한 UI 구성을 부드럽게 하기 위한 간단한 예제이다. 이 예제는 Compose를 사용하였습니다. 이 글은 PC로 보는 것을 권장합니다. 1. Dependency 추가 Material3 Library Window Size Class를 사용하면 기기 화면 사이즈를 구할 수 있다. 실제 기기 사이즈와 앱 스크린 사이즈는 다를 수 있다. 출처 : https://developer.android.com/jetpack/androidx/releases/compose-material3?hl=ko 2. Code calculateWindowSizeClass()를 통해 window width size를 구할 수 있다. HomeScr..

[Android] Concept of DI Hilt. Dive into Hilt Components.

Component Hierarchy 기존 Dagger와 달리 Hilt 사용자는 Dagger의 Components를 직접 정의하거나 인스턴스화하지 않는다. 대신 Hilt는 사용자를 위해 생성되는 미리 정의된 Components를 제공한다. Hilt는 안드로이드 애플리케이션의 다양한 라이프 사이클에 맞춰 자동으로 통합되는 Components(및 해당 Scope Annotaion) 세트가 제공된다. 아래 Diagram은 Hilt Component의 계층 구성도를 보여준다. 각 Component의 주석은 해당 Component의 수명으로 바인딩 범위를 지정하는 데 사용되는 범위 지정 주석이다. Component의 화살표는 하위 Components를 가리킨다. 일반적으로 하위 Components의 바인딩은 상위 ..

[Android] Dive inti concept of Hilt Annotations. @_@

Introduce Hilt는 Android Application에 Dagger Dependency Injection을 통합하는 표준화된 방법을 제공한다. Hilt를 사용하면 Android 앱에 종속성 주입을 쉽게 추가할 수 있다. Hilt의 목표 Android Application을 위한 Dagger 관련 인프라를 단순화한다. 가독성, 이해 및 코드 공유를 용이하게 하는 Standard set of Components 및 Scopes를 만든다. 다양한 빌드 유형에 서로 다른 바인딩을 쉽게 프로비저닝 할 수 있는 방법을 제공한다. Hilt Application Hilt를 사용하는 모든 앱은 @HiltAndroidApp Annotation이 포함된 Application class를 사용해야 한다. @Hilt..

[Android] Android RecyclerView(for ListView). Let's Dive into a RecyclerView Foundation.

Android RecyclerView Concept Of RecyclerView 기본 개념 : RecyclerView는 개발자가 데이터를 제공하고 항목의 모양을 설정하면 RecyclerView 라이브러리가 필요할 때 요소를 동적으로 생성한다. RecyclerView는 개별 요소를 재활용해서 사용하는데, 항목이 스크롤되어 화면에서 벗어나면 View를 제거하지 않는다. 대신, 화면에서 스크롤된 새 항목의 View를 재사용한다. 이를 통해 앱의 응답성을 개선하고 전력 소모를 줄여 성능이 개선된다. Key Classes RecyclerView : 데이터에 해당하는 View가 포함된 ViewGroup. ViewHolder : 목록의 각 개별 요소는 ViewHolder 객체로 정의된다. ViewHolder가 생성되..

[Android] Android can make an application. so What is an Android Application Lifecycle?

Application Lifecycle 대부분의 경우 모든 Android 애플리케이션은 자체 Linux 프로세스에서 실행됩니다. 이 프로세스는 일부 코드를 실행해야 할 때 애플리케이션용으로 생성되며 더 이상 필요하지 않고 시스템이 다른 애플리케이션에 사용하기 위해 메모리를 회수해야 할 때까지 계속 실행됩니다. Android의 특이하면서 기본적인 특징은 애플리케이션 프로세스의 수명 주기 전체 기간이 애플리케이션 자체에 의해 직접 제어되지 않는다는 점입니다. 대신 이 수명 주기 전체 기간은 시스템이 실행 중인 것으로 파악하는 애플리케이션 요소, 요소들이 사용자에게 중요한 정도 및 시스템에서 사용할 수 있는 전체 메모리 양을 조합하여 시스템에 의해 결정됩니다. 애플리케이션 개발자는 다양한 애플리케이션 구성요소..

[Android] XML 기반 View. What is View? What is View's Lifecycle? Let's Dive.

What is View? View란 화면 안에 들어가는 하나의 요소를 의미한다. 다른 말로 컨트롤 혹은 위젯이라고도 불린다. 이러한 View들을 담고 있는 View를 ViewGroup이라고 하며, ViewGroup 또한 View를 상속받아 만들어졌다. Widget : 화면에 배치되어 있는 일반적인 컨트롤 역할을 하는 View (사용자 관점) Layout : 내부에 View를 포함하여 이들을 배치하는 역할을 하는 ViewGroup (개발자 관점) 안드로이드에서 View가 그려지는 과정 Activity가 포커스를 얻으면 레이아웃을 그리도록 요청한다. Android 프레임워크는 그리기 절차를 처리하지만 Activity는 자신의 레이아웃 루트 노드를 제공해야 하며 루트 노드부터 레이아웃 트리를 따라 레이아웃 드..

[Android] Dive into Android LiveData. Basic concept of LiveData Library.

안녕하세요. 골드입니다. 오늘은 안드로이드에서 사용하는 LiveData에 대해서 정리하려고 합니다. LiveData는 이미 많은 분들이 사용하고 있을 것이라고 생각되는데요. 단순히 MVVM 패턴을 사용한다고 해서 기계적으로 ViewModel을 생성하고 변수를 LiveData로 래핑해서 Observe한 형식으로 만들어서 사용한 제 자신을 위한 글이기도 합니다. 1. LiveData를 사용하는 이유 LiveData를 사용하는 이유는 구글이 권장한 안드로이드 개발 방식인 이유도 있겠지만, 중요한 건 Observe하다는 것과 수명 주기를 인식하는 것이라고 생각됩니다. - Observe하다는 것은 LiveData가 감싸고 있는 객체를 항상 최신 데이터로 유지할 수 있다는 뜻입니다. 해당 변수를 구독하고 있는 곳에..