异步线程停止主UI线程

时间:2011-04-27 04:55:33

标签: java android multithreading dialog

任何人都可以告诉我为什么在异步线程完成之前,以下对话框不显示。我无法想出这个。这是在主UI线程中运行的。不确定为什么新线程会影响主UI线程的流程

                dialog = new ProgressDialog(this);

                dialog.show();

                new Thread(new Runnable() {
                     public void run() {
                         while(imageLoader.isProcessing()) {}
                         doSomething();   
                     }
                 }).run();

3 个答案:

答案 0 :(得分:9)

您需要调用匿名线程的start()方法,而不是run()方法。

来自docs

  

public void start():使该线程开始执行; Java虚拟机调用此线程的run方法。

答案 1 :(得分:2)

调用start方法

我建议使用AsyncTask 见this,它有正确的线程处理机制

see this example as well

答案 2 :(得分:0)

不要指望线程遵循代码流。我建议使用AsyncTask并显示对话框,你可以在onPreExecute()中显示对话框并在onPostExecute()中删除它

或者您可能想尝试runOnUiThread()