我试图通过加载简单的webView来输入www.google.com(例如:在www.google.com中使用搜索)。然后,我的应用程序突然被迫关闭,下面的错误出现在logcat中:
2020-12-03 09:51:52.971 1952-1994/? E/ActivityManager: ANR in com.example.dev
PID: 15463
Reason: Input dispatching timed out (InputMethod, Waiting to send non-key event because the touched window has not finished processing certain input events that were delivered to it over 500.0ms ago. Wait queue length: 1. Wait queue head age: 8139.8ms.)
Load: 8.15 / 8.47 / 6.62
CPU usage from 0ms to 8150ms later (2020-12-03 09:51:44.750 to 2020-12-03 09:51:52.900):
14% 1952/system_server: 7.4% user + 7.4% kernel / faults: 7633 minor 8 major
13% 15463/com.example.dev: 8.3% user + 4.9% kernel / faults: 6864 minor 1 major
2.1% 1158/media.codec: 1.5% user + 0.5% kernel / faults: 31058 minor
8% 3217/cnss_diag: 6.7% user + 1.3% kernel
4.5% 15559/com.google.android.webview:sandboxed_process0:org.chromium.content.app.SandboxedProcessService0:0: 3.9% user + 0.6% kernel / faults: 892 minor
0% 1183/media.swcodec: 0% user + 0% kernel / faults: 10006 minor
0% 5046/com.google.android.inputmethod.latin: 0% user + 0% kernel / faults: 3681 minor
0.4% 154/kswapd0: 0% user + 0.4% kernel
2% 758/surfaceflinger: 1.1% user + 0.9% kernel / faults: 621 minor
2% 2482/com.android.phone: 1.1% user + 0.9% kernel / faults: 1926 minor
2% 5358/kworker/u16:15: 0% user + 2% kernel
1.5% 725/android.hardware.wifi@1.0-service: 1.5% user + 0% kernel / faults: 33 minor
1.4% 6/kworker/u16:0: 0% user + 1.4% kernel
1.4% 449/mmc-cmdqd/0: 0% user + 1.4% kernel
0.2% 1098/media.extractor: 0.1% user + 0% kernel / faults: 3943 minor
1.4% 1197/kworker/u16:14: 0% user + 1.4% kernel
1.4% 15107/com.microsoft.teams: 0.9% user + 0.4% kernel / faults: 2184 minor 5 major
1.2% 3188/adbd: 0% user + 1.2% kernel / faults: 3 minor
0.1% 16114/com.google.android.apps.turbo: 0.1% user + 0% kernel / faults: 1780 minor 1 major
0.8% 591/logd: 0.1% user + 0.7% kernel / faults: 19 minor
0.7% 443/cfinteractive: 0% user + 0.7% kernel
0.7% 3242/irq/61-1008000.: 0% user + 0.7% kernel
0.6% 1/init: 0.3% user + 0.2% kernel / faults: 111 minor
0.6% 715/android.hardware.graphics.composer@2.1-service: 0.1% user + 0.4% kernel / faults: 192 minor
0.6% 2328/scheduler_threa: 0% user + 0.6% kernel
0.4% 290/kgsl_worker_thr: 0% user + 0.4% kernel
0% 1212/tombstoned: 0% user + 0% kernel / faults: 38 minor
0.4% 2173/com.android.bluetooth: 0.1% user + 0.3% kernel / faults: 187 minor
0.4% 4030/com.google.android.gms: 0.3% user + 0.1% kernel / faults: 274 minor
0.3% 79/smem_native_rpm: 0% user + 0.3% kernel
0.3% 721/android.hardware.sensors@1.0-service: 0.1% user + 0.2% kernel / faults: 147 minor
0.3% 14780/kworker/0:2: 0% user + 0.3% kernel
0.3% 16010/logcat: 0.3% user + 0% kernel
0.2% 7/rcu_preempt: 0% user + 0.2% kernel
0.2% 113/kworker/u17:0: 0% user + 0.2% kernel
0% 707/android.hardware.camera.provider@2.4-service: 0% user + 0% kernel / faults: 52 minor
0.2% 1026/jbd2/dm-2-8: 0% user + 0.2% kernel
0% 1070/zygote: 0% user + 0% kernel / faults: 57 minor
0.2% 1103/netd: 0.1% user + 0.1% kernel / faults: 141 minor 8 major
0.2% 1157/wificond: 0% user + 0.2% kernel
0.2% 1346/msm_irqbalance: 0.1% user + 0.1% kernel / faults: 24 minor
0.2% 2194/com.android.systemui: 0.2% user + 0% kernel / faults: 196 minor
0% 8/rcu_sched: 0% user + 0% kernel
0.1% 10/rcuop/0: 0% user + 0.1% kernel
0.1% 18/rcuop/1: 0% user + 0.1% kernel
0.1% 25/rcuop/2: 0% user + 0.1% kernel
0% 33/rcuos/3: 0% user + 0% kernel
0.1% 39/rcuop/4: 0% user + 0.1% kernel
0% 40/rcuos/4: 0% user + 0% kernel
0% 53/rcuop/6: 0% user + 0% kernel
0% 54/rcuos/6: 0% user + 0% kernel
0% 81/kworker/4:1: 0% user + 0% kernel
0.1% 116/kworker/u17:1: 0% user + 0.1% kernel
0% 215/hwrng: 0% user + 0% kernel
0.1% 580/ueventd: 0.1% user + 0% kernel / faults: 11 minor
0.1% 593/hwservicemanager: 0.1% user + 0% kernel / faults: 55 minor
0% 595/android.hardware.keymaster@4.0-service-qti: 0% user + 0% kernel / faults: 60 minor
0.1% 705/android.system.suspend@1.0-service: 0.1% user + 0% kernel / faults: 1 minor
0.1% 714/android.hardware.graphics.allocator@2.0-service: 0% user + 0.1% kernel我发现了什么:
知道是什么导致了这个错误吗?如何找出根本原因?或解决此问题的任何解决方案
发布于 2020-12-03 08:31:28
解决了
这个问题是由主线程中的许多进程引起的,因为我的自定义键盘与WebView处于相同的进程中(因为它仍然在相同的应用程序中)。我正在尝试使用一个具有更好的RAM和更好的CPU的高端设备,我发现它可以从Force Closed中存活下来,但是仍然有一个滞后的类型回调,所以我在我的日志中最小化了这个警告的可能性:
2020-12-03 14:41:48.700 23019-23019/com.example.dev W/InputConnectionWrapper.ICC: Timed out waiting on IInputContextCallback
2020-12-03 14:41:48.745 23019-23019/com.example.dev I/Choreographer: Skipped 239 frames! The application may be doing too much work on its main thread.看到这个问题,我发现另一个开发人员也经历过类似的问题,请参阅:在Android上使用自定义键盘超时等待IInputContextCallback
因此,解决方案是在我的自定义键盘与打开的WebView之间创建一个单独的进程,方法是添加属性android:process=":processname"
(进程名可以是任何内容,ref:https://developer.android.com/guide/topics/manifest/activity-element)
在我的例子中,我选择我的键盘服务作为独立的进程和问题消失。
发布于 2020-12-03 08:30:35
当应用程序的UI线程被长期阻塞时,Android中的ANR (Application )错误就会发生,因此应用程序无法及时响应输入事件或运行BroadCastReceivers。输入事件触发ANR的超时为5秒。这可能是由于在UI线程中进行的阻塞调用(如与网络相关的请求或文件系统访问)或代码中的一些死锁造成的。
此链接提供有关如何调试ANRs https://developer.android.com/topic/performance/vitals/anr的信息。
如果您已经在您的PC中安装了SDK平台工具,您可以使用root访问从设备/模拟器中提取ANR跟踪文件。另一种方法是从包含ANR痕迹的设备中取出bugreport。跟踪将在ANR时给出应用程序中所有线程的堆栈跟踪。这样,您就可以识别阻塞调用/死锁。
要提取ANR跟踪文件(需要根访问)
adb root
adb pull /data/anr .或者收钱
adb bugreport如果没有根访问权限,请使用Settings UI中的Developer选项来获取bugreport。
所有这些和其他调试方法都在上面的站点链接中进行了解释。
https://stackoverflow.com/questions/65121245
复制相似问题