2017-06-01 341 views
0

此代碼在後臺線程上運行:Thread.sleep()方法會導致ANR Android中

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

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

在開發者控制檯,我看到ANR報告:

ANR輸入調度;超時(正在等待發送因爲 觸摸窗口尚未處理完該經500.0ms前交付給它一定的輸入事件 非關鍵事件。)

"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?

+0

儘管爲什麼你想讓你的線程繼續睡眠 –

+0

發佈完整的代碼不,它在工作線程上,並且不能引起ARN。你的錯誤來自另一個代碼塊。 –

回答

0

問題是您在while(true)循環內發出增量命令。

相關問題