본문 바로가기

Android/Android Core39

[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에서 notifyDataSetChanged() 호출 후 콜백 메소드 활용하기: setInitCallback() 호출 과정 분석 제어 즐겨찾기 영역에서 기기 호출 후, observe 메소드가 활성화되면서 발생하는 notifyDataSetChanged()의 실행 과정 및 이후 setInitCallback() 호출 메커니즘에 대해 분석한 내용을 정리 해 두고자 한다. notifyDataSetChanged() 실행의 의미notifyDataSetChanged()를 호출하면, 이는 RecyclerView에 데이터셋이 변경되었음을 알리고 UI를 갱신하라는 신호를 보내는 역할을 한다.데이터셋의 변경 사항을 RecyclerView가 감지하고, 이에 따라 UI를 업데이트하는 과정이 시작된다.setInitCallback() 호출 과정ControlAdapter 내부 코드 분석 결과, onBindViewHolder 메소드에서 아이템에 대한 bind 메.. 2024. 4. 21.
[Android] RecyclerView의 성능 비결: ViewHolder 사용의 중요성 RecyclerView에서 ViewHolder를 사용하는 주요 이유는 성능 향상과 메모리 사용 최적화에 있다.RecyclerView는 대량의 데이터 세트를 효율적으로 표시하기 위해 설계된 안드로이드의 강력한 UI 컴포넌트이다.데이터가 많을 때, 모든 항목을 한 번에 화면에 표시하는 것은 메모리를 많이 사용하고, 앱의 반응 속도를 느리게 할 수 있다.여기에서 ViewHolder 패턴이 중요한 역할을 한다. ViewHolder 패턴의 주요 기능뷰 재사용(Recycling): ViewHolder 패턴을 사용하면 스크롤할 때마다 새로운 뷰를 생성하는 대신, 화면에서 사라진 뷰를 재사용할 수 있다. 이는 뷰의 생성과 파괴로 인한 비용을 줄여준다.뷰 찾기 비용 최소화(FindViewById): 뷰를 재사용할 때마다.. 2024. 4. 21.
[Android] 안드로이드에서 FLAG_ACTIVITY_REORDER_TO_FRONT 플래그를 활용한 효율적인 액티비티 관리 안드로이드에서 Intent와 함께 사용되는 Flag는 액티비티나 서비스 등의 컴포넌트를 시작할 때 시스템에게 어떻게 해당 컴포넌트를 관리해야 하는지에 대한 추가적인 지시를 제공한다. 이러한 Flag들은 주로 액티비티의 태스크와 백스택 관리에 관련된 동작을 정의하는데 사용된다.Intent Flag 사용 방법:Intent 객체에 Flag를 설정하는 방법은 간단하다. Intent 객체를 생성한 후, setFlags() 메서드나 addFlags() 메서드를 사용하여 flag를 추가할 수 있다.Intent intent = new Intent(context, TargetActivity.class);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivi.. 2024. 4. 8.
[Android] 안드로이드에서 BroadcastReceiver 활용하기: 정적 및 동적 등록과 명시적 vs 암시적 브로드캐스트 전송 이해하기 안드로이드에서 BroadcastReceiver를 이용한 명시적 및 암시적 브로드캐스트 전송과 수신에 대해 정리 해 두고자 한다.BroadcastReceiver는 안드로이드에서 중요한 역할을 하는 컴포넌트로, 애플리케이션에서 다양한 시스템 이벤트를 감지하고 반응할 수 있게 해준다.정적 및 동적 등록 방법을 이해하고, 명시적 및 암시적 브로드캐스트 전송 방법을 알고 있으면 안드로이드 애플리케이션 개발에 있어 더 효율적으로 BroadcastReceiver를 활용할 수 있다.BroadcastReceiver란?BroadcastReceiver는 안드로이드 애플리케이션 구성 요소 중 하나로, 시스템이나 애플리케이션에서 발생하는 다양한 이벤트나 정보를 수신할 수 있는 기능을 제공한다. 예를 들어, 네트워크 상태 변경,.. 2024. 4. 5.
[Android] 안드로이드에서 WindowManager를 활용하여 윈도우 위치 최상단으로 설정하기 안드로이드 애플리케이션 개발에서 윈도우매니저를 활용하여 특정 뷰 또는 윈도우를 화면의 최상단에 위치시키는 방법에 대해 정리 해 두고자 한다.이 기능은 다양한 상황에서 유용하게 사용될 수 있으며, 특히 사용자와의 인터랙션이 중요한 앱을 개발할 때 필수적인 요소가 될 수 있다. WindowManager란?WindowManager는 안드로이드 시스템에서 윈도우(액티비티, 다이얼로그 등)를 관리하는 역할을 한다.이를 통해 애플리케이션은 이 서비스를 사용하여 애플리케이션은 윈도우를 생성하고 윈도우의 크기, 위치, 표시 방식 등을 조정할 수 있게 되며, 윈도우를 화면에 추가하거나 제거할 수 있다. WindowManager는 주로 다음과 같은 작업을 수행하는 데 사용된다.윈도우 추가: 애플리케이션은 WindowMan.. 2024. 4. 4.
[Android] ItemTouchHelper.Callback으로 리사이클러뷰 아이템을 마스터하는 방법: 주요 오버라이드 메서드와 그 역할 ItemTouchHelper.Callback 클래스를 사용하면서 clearView 기능을 통해 드래그 앤 드롭 작업의 종료 시점을 감지할 수 있다는 것을 알게 되었다.이 과정에서 ItemTouchHelper.Callback 클래스에는 clearView 외에도 다양한 유용한 오버라이드(Override) 메서드들이 있다는 것을 발견했다. 이러한 메서드들을 정리하여 기록해 두고자 한다.ItemTouchHelper.Callback 클래스는 리사이클러뷰의 아이템을 드래그 앤 드롭하거나 스와이프할 때 사용자 정의 동작을 구현할 수 있도록 해주는 중요한 클래스이다.이 클래스를 통해 다음과 같은 여러 메서드들을 오버라이드할 수 있다. isLongPressDragEnabled()역할: 길게 눌러서 드래그를 시작할 수 있.. 2024. 4. 1.
[ Android ] Android에서 Selector 사용 시 상태 정의 순서의 중요성 이해하기 Android에서 selector를 사용하는 것은 버튼이나 뷰의 다양한 상태(예: 선택됨, 클릭됨, 포커스됨 등)에 따라 다른 그래픽이나 색상을 표시할 수 있게 해 주는 유용한 기능이다.selector는 XML 파일로 정의되며, 태그 내에 여러 태그를 사용하여 각 상태에 대한 디자인을 지정하고,각 태그는 특정 상태에 대응하는 그래픽 리소스를 지정한다.오늘 기록 해 두고 싶은 내용은 selector를 사용할 때 상태 정의 순서의 중요성에 관한 것 이다.평소에는 selector를 만들고 사용하는 데 큰 신경을 쓰지 않았었는데, 평소와 같이 버튼의 selector를 만들고 테스트를 해보니,selected와 enabled의 상태가 전혀 적용되지 않는 문제에 직면했다.코드를 아무리 살펴봐도 문제가 없어 보였.. 2024. 3. 26.
반응형