본문 바로가기

Android13

[Android/Kotlin] 코루틴: Kotlin에서 비동기 프로그래밍을 간소화하는 방법 코루틴(Coroutine)은 비동기 프로그래밍을 단순화하기 위해 코틀린(Kotlin)에서 제공하는 기능입니다.비동기 프로그래밍은 여러 작업을 동시에 진행할 수 있게 해주어, 애플리케이션의 효율성과 반응성을 향상시킵니다.하지만, 전통적인 방법으로 구현할 경우 코드가 복잡해지고, 에러 처리가 어려워지는 등의 문제가 발생할 수 있습니다. 코루틴은 이러한 문제를 해결하기 위해 등장했습니다.코루틴의 주요 특징은 다음과 같습니다.경량성(Lightweight): 코루틴을 사용하면 많은 수의 동시 작업을 생성할 수 있으며, 이는 전통적인 스레드를 사용하는 것보다 훨씬 적은 리소스를 사용합니다.비동기 코드의 단순화(Simplifying asynchronous code): 코루틴을 사용하면 비동기 코드를 동기 코드처럼 읽.. 2024. 5. 29.
[Android] Hilt를 활용한 Android 의존성 주입: @HiltAndroidApp으로 애플리케이션 컨테이너 설정하기 Hilt와 관련된 설명에서 "컨테이너"라는 용어는 종속 항목(의존성)을 관리하고 저장하는 구조를 의미합니다. 쉽게 말해, Hilt를 사용하는 Android 애플리케이션에서 컨테이너는 앱의 다양한 부분(예: 액티비티, 프래그먼트, 서비스 등)이 필요로 하는 객체들을 생성하고, 저장하며, 필요한 곳에 제공하는 역할을 합니다.Hilt 컨테이너의 역할객체 생성: 필요한 객체를 생성하는 공장 같은 역할을 합니다.객체 저장: 생성된 객체를 저장하여, 같은 객체를 여러 곳에서 재사용할 수 있도록 합니다.객체 제공: 저장된 객체를 필요한 곳에 자동으로 제공합니다.@HiltAndroidApp 주석의 역할@HiltAndroidApp은 애플리케이션의 시작점에 붙는 주석으로, Hilt를 사용하기 위한 초기 설정을 의미합니다... 2024. 5. 21.
[Android/Kotlin] 안드로이드 네비게이션: NavController 찾기의 두 가지 방법 비교 안드로이드 개발 시 자주 마주치는 네비게이션 컴포넌트, 특히 NavController를 찾는 두 가지 방법에 대해 알아보고, 각각의 장단점을 비교해보는 시간을 가지려고 합니다.안드로이드의 네비게이션 컴포넌트는 앱 내에서 화면 이동(네비게이션)을 용이하게 관리해 주는 매우 중요한 요소입니다. 그렇다면 NavController를 어떻게 찾을 수 있을까요? 아래에서 자세히 알아보겠습니다. 방법 1: 공식 문서 방식공식 문서는 Activity에서 NavHostFragment를 찾고, 그 안에 있는 NavController를 사용하는 방법을 권장합니다.val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as.. 2024. 5. 18.
[Android] RecyclerView의 notifyItemChanged 사용 시 발생하는 깜빡임 문제 해결 방안 RecyclerView에서 notifyDataSetChanged를 사용해 어댑터 아이템들을 업데이트할 때 발생하는 성능 문제를, 특정 아이템만을 업데이트하는 notifyItemChanged를 통해 해결할 수 있었다. 그러나 이 방식을 적용하더라도, 엘레베이터의 층수가 1초마다 변하면서 UI를 업데이트할 때 깜빡임과 버벅거림 문제가 계속 발생했다. 이 문제의 원인을 조사해보니, Android의 RecyclerView를 위한 SimpleItemAnimator의 기본 애니메이션 효과가 원인임을 알아냈다. SimpleItemAnimator는 RecyclerView 아이템 애니메이션을 구현하기 위한 추상 기본 클래스로, RecyclerView.ItemAnimator를 확장한다. 공식 문서의 RecyclerView.. 2024. 4. 22.
[Android] RecyclerView 데이터 변경 시 UI 업데이트 최적화를 위한 알림 메서드 활용법 제어 즐겨찾기 영역에서 특정 기기를 호출할 때마다, 전체 기기 목록이 업데이트되는 문제가 발생했었다. 이런 상황은 반복적으로 성능 문제를 일으켰다. 문제의 원인을 분석해본 결과, RecyclerView의 어댑터가 UI에 데이터 변경 사항을 알릴 때 notifyDataSetChanged 메소드를 사용하고 있었기 때문에, 다음과 같이 전체 기기 목록이 갱신되는 것을 확인했다. 이 문제는 어댑터의 아이템 위치값(position)을 활용하여 notifyItemChanged 메소드를 호출함으로써 해결할 수 있었다. notifyItemChanged는 지정된 위치의 아이템만을 업데이트하므로, 전체 목록을 갱신하는 것보다 훨씬 효율적이다. 이 방법으로 성능 문제를 개선하고 사용자 경험을 향상시킬 수 있었다. 이 경험을.. 2024. 4. 21.
[Android] LiveData의 이해: Android 앱에서 데이터와 UI의 효율적 동기화 LiveData는 Android 아키텍처 컴포넌트의 일부로, 데이터 관찰 및 UI 업데이트를 위한 데이터 홀더 클래스이다.LiveData는 관찰 가능한 데이터 클래스로서, UI 컴포넌트가 데이터의 변경 사항을 관찰하고, 데이터가 변경될 때마다 UI를 자동으로 업데이트할 수 있도록 해준다.LiveData의 주요 특징과 작동 방식은 다음과 같다. 1. 생명주기 인식LiveData는 생명주기를 인식하는 컴포넌트로서, Android 생명주기에 따라 관찰자(Observer)에게 데이터 변경을 통지한다. 즉, 액티비티나 프래그먼트의 생명주기 상태를 고려하여, 이 컴포넌트들이 활성 상태(STARTED 또는 RESUMED 상태)일 때만 데이터 업데이트를 수신한다.이로 인해 메모리 누수, 액티비티가 종.. 2024. 4. 21.
[Android] RecyclerView의 성능 비결: ViewHolder 사용의 중요성 RecyclerView에서 ViewHolder를 사용하는 주요 이유는 성능 향상과 메모리 사용 최적화에 있다. RecyclerView는 대량의 데이터 세트를 효율적으로 표시하기 위해 설계된 안드로이드의 강력한 UI 컴포넌트이다. 데이터가 많을 때, 모든 항목을 한 번에 화면에 표시하는 것은 메모리를 많이 사용하고, 앱의 반응 속도를 느리게 할 수 있다. 여기에서 ViewHolder 패턴이 중요한 역할을 한다. ViewHolder 패턴의 주요 기능 뷰 재사용(Recycling): ViewHolder 패턴을 사용하면 스크롤할 때마다 새로운 뷰를 생성하는 대신, 화면에서 사라진 뷰를 재사용할 수 있다. 이는 뷰의 생성과 파괴로 인한 비용을 줄여준다. 뷰 찾기 비용 최소화(FindViewById): 뷰를 재사용.. 2024. 4. 21.
[Android] 안드로이드에서 BroadcastReceiver 활용하기: 정적 및 동적 등록과 명시적 vs 암시적 브로드캐스트 전송 이해하기 안드로이드에서 BroadcastReceiver를 이용한 명시적 및 암시적 브로드캐스트 전송과 수신에 대해 정리 해 두고자 한다.BroadcastReceiver는 안드로이드에서 중요한 역할을 하는 컴포넌트로, 애플리케이션에서 다양한 시스템 이벤트를 감지하고 반응할 수 있게 해준다.정적 및 동적 등록 방법을 이해하고, 명시적 및 암시적 브로드캐스트 전송 방법을 알고 있으면 안드로이드 애플리케이션 개발에 있어 더 효율적으로 BroadcastReceiver를 활용할 수 있다.BroadcastReceiver란?BroadcastReceiver는 안드로이드 애플리케이션 구성 요소 중 하나로, 시스템이나 애플리케이션에서 발생하는 다양한 이벤트나 정보를 수신할 수 있는 기능을 제공한다. 예를 들어, 네트워크 상태 변경,.. 2024. 4. 5.
[Android] 안드로이드에서 WindowManager를 활용하여 윈도우 위치 최상단으로 설정하기 안드로이드 애플리케이션 개발에서 윈도우매니저를 활용하여 특정 뷰 또는 윈도우를 화면의 최상단에 위치시키는 방법에 대해 정리 해 두고자 한다.이 기능은 다양한 상황에서 유용하게 사용될 수 있으며, 특히 사용자와의 인터랙션이 중요한 앱을 개발할 때 필수적인 요소가 될 수 있다. WindowManager란?WindowManager는 안드로이드 시스템에서 윈도우(액티비티, 다이얼로그 등)를 관리하는 역할을 한다.이를 통해 애플리케이션은 이 서비스를 사용하여 애플리케이션은 윈도우를 생성하고 윈도우의 크기, 위치, 표시 방식 등을 조정할 수 있게 되며, 윈도우를 화면에 추가하거나 제거할 수 있다. WindowManager는 주로 다음과 같은 작업을 수행하는 데 사용된다.윈도우 추가: 애플리케이션은 WindowMan.. 2024. 4. 4.