2012-04-13 8 views
0

Создаю поток для обработки некоторых данных очереди. Внутри потока есть неограниченный цикл while. когда цикл работает, интерфейс всегда замерзает.ANDROID - While loop внутри Thread

Я смущен об этом, я создал поток, но почему он все еще замораживает ??

Thread queue = new Thread(new Runnable() { 
    public void run() { 
     while(true) { 
      ... 
     } 
    } 
    }); 
    queue.start; 

Любое решение этой проблемы?

+0

измените свой подход. – JoxTraex

+0

Для чего нужен цикл while? Полагаю, вы пытаетесь сделать что-то в фоновом режиме? Тогда, возможно, проверьте AsyncTask – george

+0

@Felix .. что вы делаете в то время, когда цикл важен. Надеюсь, что он не создает объекты ... – ngesh

ответ

3

Не только ваш интерфейс замедляется, на самом деле ваш телефон будет слишком, потому что вы потребляете (ненужно тратите) все возможности обработки в цикле while. Для лучшего подхода используйте Handler и/или AsyncTask или, по крайней мере, используйте Thread.sleep внутри цикла while в вашей ветке.

+0

О, я думаю, когда я использую новый поток, не замедлят интерфейс? – felangga

+2

Да, он создает новый поток, но этот поток также полностью занимает процессор. Попробуйте поставить ** Thread.sleep (1000); ** внутри while-loop, и вы увидите разницу – waqaslam

+0

О, хорошо, спасибо вам @Waqas. Я попробую. Мне жаль, но моей репутации недостаточно, чтобы проголосовать за ваше решение :( – felangga

Смежные вопросы