只有创建视图层次结构的原始线程才能触及其视图

时间:2012-05-08 11:37:58

标签: android progressdialog

我在某些Activity中添加了进度对话框。但是我在title.how中提到Exception以解决它。

dialog = ProgressDialog.show(Notification.this, "loading please wait",                
"Loading. Please wait...", true);

new Thread() {
 public void run() {
   try{
     performBackgroundProcess1();
     //sleep(3000,000);
   } catch (Exception e) {
     Log.e("tag", e.getMessage());
 }

 // dismiss the progress dialog
     dialog.dismiss();
  }
}.start();

this.all背景进程在performbackgroundprocess方法中执行。

2 个答案:

答案 0 :(得分:0)

你不能调用dialog.dismiss();在后台线程中。 您可以使线程在处理完成后向处理程序发送消息,并且在处理程序中您可以关闭对话框。处理程序在ui线程中工作

有一个关于它的tutorial

答案 1 :(得分:0)

将runOnUiThread用作:

        new Thread() {
     public void run() {
       try{
         performBackgroundProcess1();
         //sleep(3000,000);
       } catch (Exception e) {
         Log.e("tag", e.getMessage());
     }

// dismiss the progress dialog
      CurrentActivity.this.runOnUiThread(new Runnable(){  
    @Override  
    public void run() {  
    // TODO Auto-generated method stub  
    dialog.dismiss();  
    }  
    });    
      }
    }.start();