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가 새 작업/메시지를 기다리고 있을 때 나타납니다.
이유:
- 브로드캐스트 수신기가 10초 이내에 실행을 완료하지 않으면 ANR이 발생할 수 있습니다.
- 5초 이내에 입력 이벤트에 응답하지 않음
- ANR은 앱이 실수로 대화 상자를 표시하려고 하지만 메인 스레드에서 호출되지 않을 때 발생할 수 있습니다.(참고: UI 스레드에서 모든 UI View 호출 확인)
- 메모리 누수로 인해 발생할 수 있습니다.
- Handler.postDelayed에서 문제가 발생할 수 있습니다.
- 이러한 유형의 충돌은 일반적으로 발생하며, 스택 덤프가 발생하면 일부 앱의 스택 추적이 실제 ANR 시간 이후 오랫동안 덤프될 수 있습니다.
- SCREEN_ON Broadcast에서 발생할 수 있으며, 구글 광고는 SCREEN_ON Broadcast를 사용하고 있습니다.
ANR 수집 방법:
- 워치독
- 원주민 SIGQUIT 잡기
- 어플ExitInfo(충돌 분석에 사용됨)
- Google Play 콘솔에서 수집
- 파이어베이스(파이어베이스는 안드로이드 11 이상에서만 수집)
ANR 해결 과제:
ANR 퍼즐을 설명합니다.링크
솔루션:
- 초기화 및 광고 로딩을 최적화합니다.링크
- 미디어를 사용하는 경우 IO 스레드에서 해제합니다.
- 누출 카나리아 또는 Android 프로파일러를 사용하여 메모리 누출을 추적합니다.
- 소방 기지를 28.4.2로 다운그레이드(ANR을 수집하지는 않지만 발생할 수 없다는 것을 의미하지는 않음)
- UI 스레드에서 모든 UI View 호출 확인
- 이슈 추적기의 추가 정보
- 추가 정보 스택 응답
동일한 문제에 직면하고 있습니다 - 저는 그것이 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
'programing' 카테고리의 다른 글
Node.js MSSQL tedius 연결 오류: localhost: 1433에 연결하지 못했습니다. - connect ECONFUSED (0) | 2023.06.26 |
---|---|
SQL Server 윈도우즈 모드에서 혼합 모드(SQL Server 2008)로 변경하는 방법은 무엇입니까? (0) | 2023.06.26 |
Oracle Entity Framework - 다른 스키마의 테이블에서 엔티티 생성 (0) | 2023.06.26 |
유닛 테스트를 위한 mongodb mockup 서버 구성 및 사용 (0) | 2023.06.26 |
mongoDB에서 $unset과 $set을 조합하여 사용하는 방법 (0) | 2023.06.26 |