在片段中执行线程时显示进度对话框

时间:2014-04-13 22:37:35

标签: android thread-safety progressdialog

我在片段的OnCreateView中的线程期间显示progressDialog(自定义)的问题。我希望在线程工作期间显示progressDialog(如果完成则关闭)

   // onCreateView 
  @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {

  frg = inflater.inflate(R.layout.services_frag, container, false);  
  pdialog = new TransparentProgressDialog(getActivity(), R.drawable.loading_throbber);
  //show pdialog
  pdialog.show();
  Thread initializer=  new Thread(new Task());
  initializer.start();
  retun frg;
    }

任务可以运行:

      class Task implements Runnable {
        @Override
        public void run() {

            for (int i = 0; i < list.size(); i++) {
                final int value =i;
                handler.post(new Runnable() {
                       @Override
                        public void run() {

                    // code works
                     }
                       });
                   handler.removeCallbacks(this);
                            if( value== list.size()-1)
                             {
                                pdialog.dismiss();                        
                              }
                 }
           }
      }

progressDialog最后会显示一段时间的问题。

1 个答案:

答案 0 :(得分:0)

你需要交换

// code works

if( value== list.size()-1)
{
    pdialog.dismiss();                        
}

因为handler.post(...)中的代码将在UI线程中执行