无法在未调用looper.prepare的线程内创建处理程序

时间:2011-12-02 05:30:27

标签: android multithreading dialog handler

注意:我知道有很多与此相关的问题,但我仍然没有说服,所以问。

当我尝试显示对话框时,我无法在线程中创建处理程序而没有调用looper.prepare。

这是我的代码......

//基于某些条件从另一个方法调用此方法,该条件在单击按钮时调用

 private void download() {
    thread = new Thread() {
     public void run() {
    /**** Downloads each tour's Tour.plist file ****/
            try {
                // do many heavy operations here, like download, 
                //calling web webvice and starting another activity

               This comes at the end

                Intent toAudio = new Intent(TourDescription.this,Audio.class);
                startActivity(toAudio);
         } catch (Exception e) {
       }  

       }
    }; 
    thread.start();
 }

现在,在此行为被召唤之前,我正试图展示一个对话框。我试着在调用Intent之前放置它。

任何人都可以告诉我怎么做,因为我不明白如何解决这个问题

1 个答案:

答案 0 :(得分:5)

您无法显示子线程的对话框。 只能在UI线程/主线程中显示对话框。

从子线程

中尝试这个
runOnUiThread(new Runnable() {

        @Override
        public void run() {
            // TODO show dialog....

        }
    });