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) петля.

Другие вопросы по тегам