마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

SurfaceView ANR 발생

0 추천
MainActivity와 SurfaceView, GameCode 이 3개 클래스를 사용하고 있습니다.

MainActivity에서는 onTouchEvent로 SurfaceView에서 클릭할 수 있게 했습니다.

앱이 실행되고 처음에 touch를 하면 먹히지가 않습니다. 그리고 몇 초 뒤에

응답하지 않습니다. 앱 닫기, 대기 이렇게 뜨는데 대기 누르면 정상적으로 touch도 먹히고 잘 작동합니다.

SurfaceView에 코드는 GameCode.Method(); 이런식으로 해서 최대한 코드를 줄였고

Bitmap은 MainActivity 안에 AsyncTask로 최대한 메인 스레드에 부담 줄이려고 해봤는데

왜 처음에 앱 실행되면 touch가 안먹히고 응답하지 않습니다 라는 메시지가 뜰까요..

전혀 감을 잡을 수 없습니다..
e808b (150 포인트) 님이 2017년 8월 10일 질문

1개의 답변

0 추천
 
채택된 답변

ANR은 Application not response로 보통 3초 이상 응답이 없을 때 발생합니다.

말씀해주신 증상을 봐서는, 초기화 하면서 처리할 분량이 많아 3초 이상 걸리는 부분이 있는 듯 합니다.

각 메소드 마다 아래 같이 수행 시간을 로그로 찍어보시고,

오래 걸리는 부분에 대해  별도 Thread로 분리 하셔야 할 듯 합니다.

long start = System.currentTimeMillis();

 GameCode.Method();

Log.e("TEST", "MethodTime : " + ( System.currentTimeMillis() - start));

익명사용자 님이 2017년 8월 11일 답변
e808b님이 2017년 8월 13일 채택됨
...