Android Emulator 不时显示“系统 UI 没有响应”对话框

Posted

技术标签:

【中文标题】Android Emulator 不时显示“系统 UI 没有响应”对话框【英文标题】:Android Emulator displaying "System UI isn't responding" dialog from time to time 【发布时间】:2021-05-21 18:16:43 【问题描述】:

我的 android 模拟器(没有 play store 的 api 30)不时显示此错误对话框:

我点击“关闭应用”,屏幕瞬间变黑,然后一切又恢复正常了。

当它发生时,我会在 Logcat 中得到类似的堆栈跟踪:

2021-02-18 14:44:21.877 9796-15936/system_process E/ActivityManager: ANR in com.android.systemui
    PID: 15778
    Reason: executing service com.android.systemui/.dump.SystemUIAuxiliaryDumpService
    Load: 0.02 / 0.13 / 0.34
    ----- Output from /proc/pressure/memory -----
    some avg10=0.00 avg60=0.00 avg300=0.00 total=2958378
    full avg10=0.00 avg60=0.00 avg300=0.00 total=753369
    ----- End output from /proc/pressure/memory -----
    
    CPU usage from 168833ms to 0ms ago (2021-02-18 14:41:31.636 to 2021-02-18 14:44:20.468):
      2.5% 9796/system_server: 1.9% user + 0.6% kernel / faults: 31696 minor
      0.7% 293/android.hardware.bluetooth@1.1-service.sim: 0.7% user + 0% kernel
      0.4% 9954/com.android.bluetooth: 0.3% user + 0.1% kernel / faults: 294 minor
      0.3% 313/android.hardware.sensors@2.1-service.multihal: 0% user + 0.2% kernel
      0.2% 303/android.hardware.graphics.composer@2.3-service: 0.2% user + 0% kernel
      0.1% 10165/com.android.phone: 0% user + 0% kernel / faults: 107 minor
      0.1% 444/llkd: 0% user + 0% kernel / faults: 24 minor
      0% 9024/kworker/u8:0-events_unbound: 0% user + 0% kernel
      0% 382/adbd: 0% user + 0% kernel
      0% 10426/com.google.android.gms.persistent: 0% user + 0% kernel / faults: 76 minor
      0% 15861/kworker/u8:3-kverityd: 0% user + 0% kernel
      0% 14944/com.google.android.youtube: 0% user + 0% kernel / faults: 56 minor
      0% 171/logd: 0% user + 0% kernel / faults: 6 minor
      0% 10059/android.hardware.gnss@2.0-service.ranchu: 0% user + 0% kernel
      0% 10/rcu_preempt: 0% user + 0% kernel
      0% 14581/com.google.android.apps.youtube.music: 0% user + 0% kernel / faults: 42 minor
      0% 9762/netd: 0% user + 0% kernel / faults: 36 minor
      0% 12125/com.google.android.apps.messaging: 0% user + 0% kernel / faults: 21 minor
      0% 12334/com.google.android.ims: 0% user + 0% kernel / faults: 10 minor
      0% 173/servicemanager: 0% user + 0% kernel
      0% 362/logcat: 0% user + 0% kernel
      0% 9/ksoftirqd/0: 0% user + 0% kernel
      0% 15/migration/1: 0% user + 0% kernel
      0% 16/ksoftirqd/1: 0% user + 0% kernel
      0% 21/ksoftirqd/2: 0% user + 0% kernel
      0% 26/ksoftirqd/3: 0% user + 0% kernel
      0% 172/lmkd: 0% user + 0% kernel
      0% 174/hwservicemanager: 0% user + 0% kernel
      0% 182/vold: 0% user + 0% kernel / faults: 6 minor
      0% 204/jbd2/dm-5-8: 0% user + 0% kernel
      0% 287/statsd: 0% user + 0% kernel / faults: 1 minor
      0% 304/android.hardware.health@2.1-service: 0% user + 0% kernel
      0% 385/traced_probes: 0% user + 0% kernel
      0% 439/android.hardware.biometrics.fingerprint@2.1-service: 0% user + 0% kernel
      0% 478/netmgr: 0% user + 0% kernel
      0% 10080/com.android.networkstack.process: 0% user + 0% kernel / faults: 31 minor
      0% 14525/kworker/2:2-events: 0% user + 0% kernel
      0% 15069/logcat: 0% user + 0% kernel
      0% 15631/kworker/1:1-events_power_efficient: 0% user + 0% kernel
    1.5% TOTAL: 0.7% user + 0.4% kernel + 0% iowait + 0.2% irq + 0% softirq
    CPU usage from 20ms to 322ms later (2021-02-18 14:44:20.488 to 2021-02-18 14:44:20.791):
      26% 9796/system_server: 15% user + 11% kernel / faults: 292 minor
        22% 15936/AnrConsumer: 15% user + 7.6% kernel
    8.3% TOTAL: 5% user + 3.3% kernel

由于我自己的应用程序没有关闭,并且堆栈跟踪中没有任何内容引用它,而且当我在此模拟器实例中运行任何应用程序时似乎会发生这种情况,我想问题出在模拟器本身而不是我的自己的应用程序。我的其他 api 模拟器不会遇到这个问题。

This another question 似乎指出了类似的问题,但我没有使用颤振,我也尝试了一些解决方案,但没有成功。

其他人是否有同样的问题并且能够解决它?你是怎么解决的?

注意:我已经在堆栈溢出上搜索了这个特定问题,并且能够找到其他一些有同样问题的人,但这些问题没有好的和有效的答案。我倾向于认为 api 30 模拟器仍然是“有问题的”,正如有人在其中一些问题中所建议的那样。不过能找到解决办法就好了。

【问题讨论】:

【参考方案1】:

我以前每次启动 AVD 时都会遇到这个问题。

我检查了我在模拟器上安装的 android 版本,发现 ABI 版本是 x86。

我下载了 X86_64 版本,再也没有遇到那个烦人的错误。

【讨论】:

【参考方案2】:
    打开 AVD 管理器 编辑配置设备 显示高级设置 查看图形并选择硬件 保存并重试

如果图形无法选择...

C:\Users\YOUR_USERNAME\.android\avd\YOUR_DEVICE.avd

并在 config.ini 存档中编辑 hw.gpu.mode = autohw.gpu.mode = host

保存、退出、重启 Android Studio 并再次模拟您的设备。

【讨论】:

以上是关于Android Emulator 不时显示“系统 UI 没有响应”对话框的主要内容,如果未能解决你的问题,请参考以下文章

我的Android进阶之旅adb devices 显示多了一个 emulator-5554 host

我的Android进阶之旅adb devices 显示多了一个 emulator-5554 host

Xamarin Android Emulator Manager 不显示所有平台

android emulator-替换系统应用程序

Android TV Emulator:如何创建曲面显示模拟器?

转: android emulator 命令详解