Android9.0 프레임워크 레이어에서 ContentProvider로 인한 ANR의 원리 분석

1. 소개


  Android 시스템에서는 앱에서 일부 작업을 수행할 때 시스템의 ActivityManagerService(줄여서 AMS) 및 WindowManagerService(줄여서 WMS) 가 앱이 앱을 실행할 때 앱
의 응답 시간을 감지합니다 . 화면 터치에 반응하지 않거나 키보드 입력 시간 또는 특정 이벤트가 처리되지 않은 경우 ANR이 발생합니다.
다음 네 가지 상황에서 ANR이 발생할 수 있습니다.

    1.InputDispatching Timeout: 앱이 실행 중일 때 메인 스레드는 5초 이내에 화면 터치 이벤트 또는 키보드 입력 이벤트에 응답할 수 없습니다.

    2.BroadcastQueue Timeout: 앱에서 포그라운드 브로드캐스트(BroadcastReceiver)의 onReceive() 함수가 실행되면 10초 동안 메인 스레드에서 처리가 완료되지 않고 백그라운드에서 60초 동안 처리가 완료되지 않습니다.

    3. Service Timeout: 시스템 서비스의 수명 주기 기능에서 특정 시간(포그라운드 서비스 20초, 백그라운드 서비스 200초) 내에 메인 스레드에서 응답을 완료할 수 없습니다.

    4.ContentProvider Timeout: ContentProvider 게시가 메인 스레드에서 10초 이내에 완료되지 않습니다.
    (프로세스 시작 프로세스 중에 발생하면 프로세스가 직접 종료되고 해당 정보가 지워지며 ANR 대화 상자가 팝업되지 않습니다.) 다음으로 차단 입력
및 응답 없음에 대한 분석을 분석해 보겠습니다. 메인 스레드의 서비스에 의해.

2. 프레임워크 계층에서 ContentProvider로 인한 ANR의 원리 분석 핵심 클래스

frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java

3. 프레임워크 레이어에서 ContentProvider에 의한 ANR의 원리 분석

Supongo que te gusta

Origin blog.csdn.net/baidu_41666295/article/details/131744428
Recomendado
Clasificación