programing

Android.os의 ANR.MessageQueue.nativePollOnce

lastmoon 2023. 6. 26. 21:34
반응형

Android.os의 ANR.MessageQueue.nativePollOnce

이 ANR은 앱의 다른 부분에서 볼 수 있습니다.이 ANR의 원인을 알고 싶으십니까?

main (native): tid=1 systid=31940
#00 pc 0x5431c libc.so 
#01 pc 0x1313a5 libart.so 
#02 pc 0x2ab05b libart.so 
#03 pc 0x3659 libnativehelper.so 
#04 pc 0x9dee9 libandroid_runtime.so 
#05 pc 0x65c45 libgui.so 
#06 pc 0x11dcd libutils.so 
#07 pc 0x11abf libutils.so 
#08 pc 0xbcc7d libandroid_runtime.so 
       at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
       at android.os.MessageQueue.next(MessageQueue.java:339)
       at android.os.Looper.loop(Looper.java:199)
       at android.app.ActivityThread.main(ActivityThread.java:8276)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1006)

이것이 이 ANR에 대해 소방대가 말하는 것입니다.

ANR이 발생할 때 이 스레드가 유휴 상태였습니다.근본 원인을 파악할 수 있는 충분한 정보가 없습니다.

Native PollOnce:

CPU가 새 작업/메시지를 기다리고 있을 때 나타납니다.

이유:

  1. 브로드캐스트 수신기가 10초 이내에 실행을 완료하지 않으면 ANR이 발생할 수 있습니다.
  2. 5초 이내에 입력 이벤트에 응답하지 않음
  3. ANR은 앱이 실수로 대화 상자를 표시하려고 하지만 메인 스레드에서 호출되지 않을 때 발생할 수 있습니다.(참고: UI 스레드에서 모든 UI View 호출 확인)
  4. 메모리 누수로 인해 발생할 수 있습니다.
  5. Handler.postDelayed에서 문제가 발생할 수 있습니다.
  6. 이러한 유형의 충돌은 일반적으로 발생하며, 스택 덤프가 발생하면 일부 앱의 스택 추적이 실제 ANR 시간 이후 오랫동안 덤프될 수 있습니다.
  7. SCREEN_ON Broadcast에서 발생할 수 있으며, 구글 광고는 SCREEN_ON Broadcast를 사용하고 있습니다.

ANR 수집 방법:

  1. 워치독
  2. 원주민 SIGQUIT 잡기
  3. 어플ExitInfo(충돌 분석에 사용됨)
  4. Google Play 콘솔에서 수집
  5. 파이어베이스(파이어베이스는 안드로이드 11 이상에서만 수집)

ANR 해결 과제:

ANR 퍼즐을 설명합니다.링크

솔루션:

  1. 초기화 및 광고 로딩을 최적화합니다.링크
  2. 미디어를 사용하는 경우 IO 스레드에서 해제합니다.
  3. 누출 카나리아 또는 Android 프로파일러를 사용하여 메모리 누출을 추적합니다.
  4. 소방 기지를 28.4.2로 다운그레이드(ANR을 수집하지는 않지만 발생할 수 없다는 것을 의미하지는 않음)
  5. UI 스레드에서 모든 UI View 호출 확인
  6. 이슈 추적기의 추가 정보
  7. 추가 정보 스택 응답

동일한 문제에 직면하고 있습니다 - 저는 그것이 Admob 또는 Unity 광고와 관련이 있다고 읽었고 구글을 위한 오픈 스레드가 있습니다: https://issuetracker.google.com/issues/230950647?pli=1 .

클라우드 메시징 종속성 v23.0.7 Firebase 최신 릴리스에서 이 릴리스가 ANR을 줄일 수 있다는 언급이 있습니다.여기 문서에 언급된 그의 말이 있습니다.

이제 메시지 브로드캐스트는 서비스에 바인딩된 후 즉시 종료됩니다.이 변화는 ANR의 가능성을 감소시킬 것입니다.

저의 경우, 파이어베이스 클라우드 메시징 lib의 오류였습니다.이 버그는 2022년 12월 8일에 출시된 최신 버전 23.1.1에서 수정되었습니다.

https://firebase.google.com/support/release-notes/android#messaging_v23-1-1

도움이 되길 바랍니다.

언급URL : https://stackoverflow.com/questions/71478162/anr-at-android-os-messagequeue-nativepollonce

반응형