본문 바로가기
기타

안드로이드 ANR time error

by tovantablack 2019. 11. 8.
728x90
728x90

Android 앱의 UI 스레드가 너무 오랫동안 차단되면 "응용 프로그램이 응답하지 않음"(ANR:Application Not Responding) 오류가 발생합니다. 앱이 포 그라운드에있는 경우 시스템은 그림 1과 같이 사용자에게 대화 상자를 표시합니다. ANR 대화 상자는 사용자에게 앱을 강제 종료 할 수있는 기회를 제공합니다.

사용자에게 보여지는 ANR 에러 창

ANR은 UI 업데이트를 담당하는 앱의 메인 스레드가 사용자 입력 이벤트를 처리하거나 그릴 수 없어서 사용자에게 좌절감을주기 때문에 문제가됩니다. 앱의 기본 스레드에 대한 자세한 내용은 프로세스 및 스레드를 참조하십시오 .

다음 조건 중 하나가 발생하면 앱에 ANR이 트리거됩니다.

활동이 포 그라운드에있는 동안 앱이 BroadcastReceiver5 초 이내에 입력 이벤트 또는 키 누르기 또는 화면 터치 이벤트와 같은 응답에 응답하지 않았습니다 .
포 그라운드에서 활동 BroadcastReceiver이 없지만 상당한 시간 내에 실행이 완료되지 않았습니다.
앱에 ANR이 발생하면이 문서의 지침을 사용하여 문제를 진단하고 해결할 수 있습니다.

문제 감지 및 진단
Android는 앱에 문제가 있음을 알리고 진단하는 데 도움이되는 몇 가지 방법을 제공합니다. 이미 앱을 게시 한 경우 Android 생체에서 문제가 발생했음을 경고하고 문제를 찾는 데 도움이되는 진단 도구가 있습니다.

안드로이드 필수 요소
앱이 과도한 ANR을 표시 할 때 Play Console을 통해 알림을 보내 앱의 성능을 향상시키는 데 도움이되는 Android 필수 기능을 제공합니다 . Android 핵심은 앱이 다음과 같은 경우 ANR이 과도하다고 생각합니다.

일일 세션의 0.47 % 이상에서 하나 이상의 ANR을 표시합니다.
일일 세션의 최소 0.24 %에서 2 개 이상의 ANR을 전시합니다.
매일 세션이 앱을 사용하는 일을 말한다.

Google Play에서 Android 필수 데이터를 수집하는 방법에 대한 자세한 내용은 Play Console 설명서를 참조하십시오.

ANR 진단
ANR을 진단 할 때 찾아야 할 몇 가지 일반적인 패턴이 있습니다.

앱이 메인 ​​스레드에서 I / O와 관련된 느린 작업을 수행하고 있습니다.
앱이 메인 ​​스레드에서 긴 계산을 수행하고 있습니다.
기본 스레드가 다른 프로세스에 대한 동기 바인더 호출을 수행 중이며 다른 프로세스가 리턴하는 데 시간이 오래 걸립니다.
주 스레드는 다른 스레드에서 발생하는 긴 작업을 위해 동기화 된 블록을 기다리는 동안 차단됩니다.
주 스레드는 프로세스 또는 바인더 호출을 통해 다른 스레드와 교착 상태에 있습니다. 메인 스레드는 긴 작업이 끝날 때까지 기다리는 것이 아니라 교착 상태입니다. 자세한 내용 은 Wikipedia의 교착 상태 를 참조하십시오 .

 

출처: Android Developers

728x90
728x90

댓글