2012-04-13 62 views
0

我创建一个线程来处理一些队列数据。在线程内部有一个无限循环。当循环工作时,界面始终冻结。ANDROID - while循环内线程

我对此感到困惑,我创建了线程,但它为什么仍然冻结?

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

针对此问题的任何解决方案?

+0

改变你的方法。 – JoxTraex 2012-04-13 08:14:53

+0

你需要什么while循环?我想你尝试在背景中做点什么?然后可能检查AsyncTask – george 2012-04-13 08:17:09

+0

@Felix ..你在While循环中做什么很重要..希望它不会创建对象... – ngesh 2012-04-13 08:18:42

回答

3

它不只是你的界面变慢,实际上你的手机也会因为你在一个while循环中消耗(不必要的浪费)所有的处理能力。为了更好的方法,在你的线程中使用Handler和/或AsyncTask或至少使用Thread.sleep while循环。

+0

呵呵,我觉得当我用一个新的线程时,会不会减慢界面呢? – felangga 2012-04-13 08:27:58

+2

是的,它确实创建了一个新线程,但该线程也完全占用了处理器。尝试把** Thread.sleep(1000); **在while循环中,你会看到区别 – waqaslam 2012-04-13 08:29:58

+0

噢好吧,感谢你@Waqas。我会试试看。 对不起,但我的声望还不足以投票你的解决方案:( – felangga 2012-04-13 08:32:19