ANR 输入调度超时(服务器)未响应

Ami*_*pta 8 events android timeout focus android-anr-dialog

在我的 Android 应用程序中,我随机遇到非常奇怪的崩溃。当我打开应用程序时,我正在启动屏幕上从服务器获取数据。当应用程序登陆主页时,整个应用程序突然关闭,日志中打印的内容如下:

ANR in com.test (com.test/.activities.SplashActivity)
    PID: 16020
    Reason: Input dispatching timed out (49abf6 com.test/com.test.activities.SplashActivity (server) is not responding. Waited 5004ms for FocusEvent(hasFocus=false))
Parent: com.test/.activities.SplashActivity
    Load: 29.87 / 30.79 / 30.77
    ----- Output from /proc/pressure/memory -----
    some avg10=0.00 avg60=0.00 avg300=0.00 total=3115344
    full avg10=0.00 avg60=0.00 avg300=0.00 total=1338179
    ----- End output from /proc/pressure/memory -----
Run Code Online (Sandbox Code Playgroud)

mab*_*azm 6

此异常的原因是 UI 线程被阻塞并且您的应用程序没有响应超过 5 秒。

仔细检查从服务器获取数据的代码是否不在主线程上执行。此外,如果您使用广播接收器执行任何可能需要 10 秒的逻辑,也会导致此问题。

其他需要检查的事情是从服务器获取数据的代码中的异常处理。

您也可以查看以下页面: https://developer.android.com/training/articles/perf-anr.html#anr

  • 虽然此链接可以回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会变得无效。- [来自评论](/review/late-answers/33211590) (2认同)