← 질문 목록
#91깊이 0

비동기로 옮겼는데도 왜 응답 없음이 생기는가?

모바일심화비동기

작업을 다른 스레드로 보냈어도 메인 스레드가 결과나 잠금을 기다리면 막히기 때문이다. 느린 Binder 호출과 과도한 그리기도 입력 처리를 지연시킨다.

  1. 사용자메인 Looper

    입력 이벤트를 보낸다

  2. 메인 Looper작업

    결과나 잠금을 기다린다

  3. 시스템

    기한 내 응답이 없어 ANR을 기록한다

메인 스레드는 입력과 생명주기 콜백과 화면 갱신을 직렬로 처리한다. 입력 이벤트에 약 5초간 응답하지 못하면 입력 디스패치 ANR이 날 수 있다.

스택 덤프에서 main의 대기 지점을 찾고 잠금 보유 스레드도 따라간다. StrictMode와 Perfetto로 I/O와 느린 Binder 호출을 확인한다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

비동기로 옮겼는데도 왜 응답 없음이 생기는가?