首页 > 解决方案 > 为什么 ConsentForm.load 有时会导致 android ANR?

问题描述

我主要从Google 的官方 Consent SDK复制并粘贴了代码。

虽然它大部分时间都可以正常工作,但有时会导致 ANR。它正在成为一个主要的 ANR 原因。我假设 ConsentForm.load 必须在 UI 线程上运行。有没有办法解决这个问题?

回复:

输入调度超时(等待发送非键事件,因为触摸窗口尚未完成处理某些在 500.0 毫秒前交付给它的输入事件。等待队列长度:2。等待队列头年龄:6676.6 毫秒。)

"main" tid=1 Native 
"main" prio=5 tid=1 Native
  | group="main" sCount=1 dsCount=0 obj=0x74f5ef98 self=0xb8114c60
  | sysTid=18557 nice=-4 cgrp=default sched=0/0 handle=0xb6f28b34
  | state=S schedstat=( 1288189187 190774336 1785 ) utm=89 stm=39 core=0 HZ=100
  | stack=0xbe594000-0xbe596000 stackSize=8MB
  | held mutexes=
  #00  pc 0000000000016a6c  /system/lib/libc.so (syscall+28)
  #01  pc 00000000000f60bb  /system/lib/libart.so (_ZN3art17ConditionVariable4WaitEPNS_6ThreadE+82)
  #02  pc 00000000003e4a23  /system/lib/libart.so (_ZN3artL12GoToRunnableEPNS_6ThreadE+502)
  #03  pc 00000000000e56dd  /system/lib/libart.so (_ZN3art12JniMethodEndEjPNS_6ThreadE+8)
  #04  pc 0000000000183663  /data/app/com.google.android.webview-1/oat/arm/base.odex (Java_org_chromium_content_browser_framehost_NavigationControllerImpl_nativeLoadUrl__JLjava_lang_String_2IILjava_lang_String_2IILjava_lang_String_2Lorg_chromium_content_1public_common_ResourceRequestBody_2Ljava_lang_String_2Ljava_lang_String_2Ljava_lang_String_2ZZZ+342)
  at org.chromium.content.browser.framehost.NavigationControllerImpl.nativeLoadUrl (NavigationControllerImpl.java)
  at org.chromium.content.browser.framehost.NavigationControllerImpl.loadUrl (NavigationControllerImpl.java:67)
  at org.chromium.android_webview.AwContents.loadUrl (AwContents.java:496)
  at org.chromium.android_webview.AwContents.loadUrl (AwContents.java:375)
  at org.chromium.android_webview.AwContents.loadUrl (AwContents.java:380)
  at com.android.webview.chromium.WebViewChromium.loadUrl (WebViewChromium.java:227)
  at android.webkit.WebView.loadUrl (WebView.java:894)
  at com.google.ads.consent.ConsentForm.load (ConsentForm.java:271)

标签: android

解决方案


推荐阅读