【问题标题】:Thread.sleep() causes ANR in AndroidThread.sleep() 在 Android 中导致 ANR
【发布时间】:2017-06-01 16:37:23
【问题描述】:

此代码在后台线程上运行:

@Override
public void run() {
    while (true) {
        a = a+1;

        try {
            Thread.sleep(100);
        }
        catch (Throwable t) {
            Log.e("","", t);
        }           
    }
}

在开发者控制台中我看到 ANR 报告:

ANR 输入调度超时(等待发送非键事件,因为 触摸的窗口尚未完成对某些输入事件的处理 超过 500.0 毫秒前交付给它。)

"myThread" prio=5 tid=7 SUSPENDED
  | group="main" sCount=1 dsCount=0 obj=0x11111111 self=0x22222222
  | sysTid=11111 nice=0 sched=0/0 cgrp=[fopen-error:2] handle=333333333
  | state=S schedstat=( 0 0 0 ) utm=2 stm=3 core=1
  at java.lang.VMThread.sleep (Native Method)
  at java.lang.Thread.sleep (Thread.java:1013)
  at java.lang.Thread.sleep (Thread.java:995)
  at com.example.MyThread.run (MyThread.java:123)

如何解决此 ANR?

【问题讨论】:

  • 发布完整的代码,但为什么你希望你的线程继续休眠
  • 不,它在工作线程上,不会导致 ARN。您的错误来自另一个代码块。

标签: android multithreading android-anr-dialog android-thread


【解决方案1】:

问题是您在 while(true) 循环中执行增量命令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多