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.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?
1 ответ
Проблема в том, что вы делаете добавочную команду внутри while(true)
петля.