[Android] 안드로이드에서 예외(Exceptions) 추적하기
·
Android
안드로이드 앱 개발 과정에서 예외 추적은 매우 중요한 작업입니다. 예외를 제대로 기록하고 분석해야 문제를 재현하고, 근본 원인을 찾아내어 더 안정적인 앱을 만들 수 있습니다. 이번 글에서는 안드로이드에서 예외를 추적하는 다양한 방법을 정리해 보겠습니다. 1. Logcat을 이용한 예외 로깅가장 기본적인 방법은 Logcat을 활용하는 것입니다.예외가 발생하면 시스템은 예외 유형, 메시지, 발생 코드 줄, 스택 트레이스를 Logcat에 출력합니다.Logcat에서 E/AndroidRuntime 키워드로 필터링하면 예외 로그만 집중적으로 확인할 수 있습니다. 2. try-catch로 예외 처리 및 로깅앱이 크래시로 이어지지 않도록 방지하려면 try-catch 블록을 적절히 활용해야 합니다.예외 발생 시 로그를 ..
[Android] 안드로이드의 Looper, Handler, HandlerThread 이해하기
·
Android
안드로이드에서 멀티스레딩을 다룰 때 자주 등장하는 세 가지 컴포넌트가 있습니다. 바로 Looper, Handler, HandlerThread입니다. 이들은 스레드를 관리하고, 메시지/작업을 큐에 넣어 순차적으로 처리하며, UI 스레드와의 통신을 가능하게 합니다. 🥯 LooperLooper는 안드로이드의 스레딩 모델에서 메시지 큐를 모니터링하고 처리하는 핵심 컴포넌트입니다.스레드를 살아있게 유지하며, 큐에 들어온 메시지나 작업을 순차적으로 꺼내 처리합니다.주요 역할메시지 큐를 지속적으로 모니터링하고 메시지나 작업을 적절한 핸들러로 전달스레드가 종료되지 않고 계속해서 작업을 기다릴 수 있도록 유지특징메인(UI) 스레드에는 기본적으로 Looper가 붙어 있음워커 스레드의 경우 Looper.prepare() ..
[Android] 런타임 권한(runtime permissions) 처리
·
Android
🍋‍🟩 런타임 권한(Runtime Permissions)안드로이드 6.0(API 23) 이상에서는 런타임 권한(Runtime Permission) 또는 위험 권한(Dangerous Permission)이라는 개념이 도입되었습니다. 🍋‍🟩 런타임 권한이란?런타임 권한은 앱이 제한된 데이터에 접근하거나, 시스템 및 다른 앱에 영향을 줄 수 있는 동작을 수행할 때 반드시 요청해야 하는 권한입니다.설치 시 자동으로 부여되지 않으며, 앱 실행 중 실제로 필요할 때 팝업 다이얼로그로 요청됩니다.즉, 개발자는 권한이 이미 부여되어 있다고 가정해서는 안되며, 기능 실행 전마다 권한을 확인하고 필요 시 요청해야 합니다. 🍋‍🟩 위험 권한 예시런타임 권한 대부분은 민감한 사용자 데이터와 관련이 있습니다.위치 정..
[Android] SparseArray에 대하여
·
Android
SparseArray는 정수(int)를 객체(Object)에 매핑하는 안드로이드에 최적화된 자료구조입니다. 일반적인 배열과 달리 인덱스가 연속적일 필요가 없어 중간에 값이 비어 있는(gap) 형태도 허용합니다.이 클래스는 HashMap를 사용하는 것보다 메모리를 더 효율적으로 쓰도록 설계되었습니다. 🍋‍🟩 SparseArray의 주요 특징메모리 효율성키-값 매핑을 위해 HashTable을 사용하는 HashMap과 달리 SparseArray는 오토박싱(int → Integer 변환)이 필요 없습니다. 각 엔트리를 별도의 객체로 포장하지 않고, 내부 배열에 직접 저장하기 때문에 훨씬 적은 메모리를 소비합니다.성능매우 큰 데이터 셋의 경우 HashMap만큼 빠르지는 않지만, SparseArray는 메모리 ..
[Android] ActivityManager란?
·
Android
📗 ActivityManagerActivityManager는 안드로이드에서 액티비티, 서비스, 그리고 이를 포함하는 프로세스에 대한 정보를 제공하고, 필요할 경우 이들과 상호작용할 수 있게 해주는 클래스입니다.이 클래스의 많은 기능은 특수한 상황이나 디버깅, 테스트 목적으로 만들어졌기 때문에 일반적인 앱 개발에서는 ActivityManager를 직접 다룰 일은 거의 없으나, 일부 메서드는 실무에서도 활용할 수 있습니다. 📗 ActivityManager의 주요 기능태스크 및 Activity 정보ActivityManager은 실행 중인 태스크, Activity 및 해당 스택에 대한 세부 정보를 추적할 수 있습니다. 이는 개발자가 앱 동작 및 시스템 리소스 사용량을 모니터링하는 데 도움이 됩니다.메모리 ..