Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 멤버변수
- rxjava hot observable
- 안드로이드 레트로핏 사용법
- 안드로이드 라이선스 종류
- android ar 개발
- 스택 큐 차이
- 안드로이드 유닛테스트란
- 큐 자바 코드
- 안드로이드 유닛 테스트 예시
- jvm 작동 원리
- 자바 다형성
- 클래스
- 서비스 vs 쓰레드
- rxjava cold observable
- jvm이란
- 안드로이드 os 구조
- 서비스 쓰레드 차이
- ar vr 차이
- Rxjava Observable
- 객체
- 2022 플러터 안드로이드 스튜디오
- 안드로이드 유닛 테스트
- 안드로이드 라이선스
- 안드로이드 레트로핏 crud
- ANR이란
- 2022 플러터 설치
- 스택 자바 코드
- android retrofit login
- rxjava disposable
- 플러터 설치 2022
Archives
- Today
- Total
나만을 위한 블로그
[Manifest-Android] 14. ANR 본문
728x90
반응형
ANR은 메인 쓰레드가 너무 오래 차단되어 발생하는 에러다. 일반적으로 5초 이상 차단될 경우 발생하고 ANR이 발생하면 안드로이드는 앱을 닫거나 응답 대기를 안내한다. ANR이 발생하는 원인은 아래 중 하나일 수 있다.
- 메인 쓰레드에서 5초 이상 지속되는 무거운 계산 작업
- 장시간 실행되는 네트워크, DB 작업
- 메인 쓰레드에서의 동기식 작업으로 인한 UI 작업 차단
ANR 방지 방법
메인 쓰레드의 응답성을 위해 무거운 작업은 메인 쓰레드에서 수행하지 않는 게 필수적이다. 아래는 몇 가지 권장사항이다.
- 메인 쓰레드에서 무거운 작업 실행하지 않기 : 파일 I/O, 네트워크 요청 같은 걸 처리할 땐 백그라운드 쓰레드를 활용한다. 코루틴, IO 디스패처를 써서 백그라운드 작업 관리를 효율적으로 할 수 있다
- 지속적 작업에는 WorkManager 사용 : 데이터 동기화 등 백그라운드에서 실행돼야 하는 작업에는 WorkManager를 써라. 이 API는 작업이 메인 쓰레드 밖에서 스케줄링되고 실행될 것을 보장한다
- 데이터 로딩 최적화 : 대규모 데이터 세트를 효율적으로 가져오기 위해 페이징을 구현하라. 데이터를 작고 관리 가능한 조각으로 나눠 가져오면 UI 과부하를 방지하고 성능을 개선할 수 있다
- 구성 변경 시 UI 변경 최소화 : 뷰모델을 써서 UI 관련 데이터를 유지하고 화면 회전 같은 구성 변경 시 불필요한 UI 재로드가 발생하지 않게 한다
- 안드로이드 스튜디오로 모니터링, 프로파일링 : 안드로이드 스튜디오의 프로파일러를 써서 CPU, 메모리, 네트워크 사용량을 모니터링해서 ANR을 유발할 수 있는 성능 병목 현상을 식별하고 예방한다
- 블로킹 호출 방지 : 메인 쓰레드에서 긴 루프, sleep 호출, 동기식 네트워크 요청 같은 블로킹 작업을 방지해서 앱 성능을 원활하게 유지한다
- 핸들러를 통한 작은 딜레이 도입 : Handler.postDelayed()를 써서 메인 쓰레드 차단 없이 작은 딜레이를 도입해서 반응형 앱 경험을 제공한다
핸들러 대신 코루틴의 delay()를 써서도 같은 효과를 낼 수 있다.
반응형
'스터디' 카테고리의 다른 글
[Manifest-Android] 15. 딥링크 (0) | 2025.06.23 |
---|---|
[Manifest-Android] 13. 메모리 관리, 메모리 누수 처리 (0) | 2025.06.23 |
[Manifest-Android] 12. 구성 변경 (0) | 2025.06.23 |
[Manifest-Android] 11. 컨텐츠 프로바이더 (0) | 2025.06.23 |
[Manifest-Android] 10. 브로드캐스트 리시버 (0) | 2025.06.21 |
Comments