title: Android: Progress Bar to Upload Data to the Server
body: <p>In my application some data is there which is wrapped into an object.
  I am sending this object to the server. Everything work correctly.
  Here I want to show progress bar when the data is loading to the server.
  For this I am using this code:</p>
  
  <pre><code>ProgressThread progThread;
  ProgressDialog progDialog;
  
  int typeBar;
  int delay = 40; 
  int maxBarValue = 200;
  @Override
  protected Dialog onCreateDialog(int id) {
      switch (id) {
      case 1:
          progDialog = new ProgressDialog(this);
          progDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
          progDialog.setMax(maxBarValue);
          progDialog.setMessage("Data uploading to the Server..");
          progThread = new ProgressThread(handler);
          progThread.start();
          return progDialog;
  
      default:
          return null;
      }
  }
  
  
  final Handler handler = new Handler() {
      public void handleMessage(Message msg) {
          // Get the current value of the variable total from the message data
          // and update the progress bar.
          int total = msg.getData().getInt("total");
          progDialog.setProgress(total);
          if (total &lt;= 0) {
              dismissDialog(typeBar);
              progThread.setState(ProgressThread.DONE);
          }
      }
  };
  
  private class ProgressThread extends Thread {
  
      final static int DONE = 0;
      final static int RUNNING = 1;
  
      Handler mHandler;
      int mState;
      int total;
  
      ProgressThread(Handler h) {
          mHandler = h;
      }
  
  
      @Override
      public void run() {
          mState = RUNNING;
          total = maxBarValue;
          while (mState == RUNNING) {
  
              connectServerClass.saveOnServer(Object);
  
              Message msg = mHandler.obtainMessage();
              Bundle b = new Bundle();
              b.putInt("total", total);
              msg.setData(b);
              mHandler.sendMessage(msg);
  
              total--; // Count down
          }
      }
      public void setState(int state) {
          mState = state;
      }
  }
  </code></pre>
  
  <p>When user click on button then:</p>
  
  <pre><code>typeBar = 1;
  showDialog(typeBar);
  </code></pre>
  
  <p>connectServerClass.saveOnServer(Object)
  by the above line I am sending object to the server. Actually I am sending data to the other class which is connectServerClass and this class send object to the server.
  but this code not work correctly. This code connect to the server lots of time.</p>
  
  <p>I use the following Code :</p>
  
  <pre><code>private class Uploader extends AsyncTask&lt;Void, String, Integer&gt;
      {
          private List&lt;File&gt; files;
          private boolean canceled;
          private int uploaded;
          private Account account;
          private ProgressDialog uploadSeekBar;
  
          public Uploader(Account a, List&lt;File&gt; files)
          {
              this.account = a;
              this.files = files;
          }
  
          @Override
          protected void onPreExecute()
          {
              uploadSeekBar.setMax(files.size());
              uploadSeekBar.setProgress(0);
              uploadSeekBar.setVisibility(View.VISIBLE);  //Error: the method setVisibility is undefined
          }
  
          @Override
          protected void onPostExecute(Integer result)
          {
              uploadSeekBar.setVisibility(View.INVISIBLE);
              Toast.makeText(Upload.this, result + " files uploaded", // Error: Upload cannot be resolved to a type
                      Toast.LENGTH_LONG).show();
          }
  
          @Override
          protected void onCancelled()
          {
              // XXX need a way to actually cancel the last upload
              Toast.makeText(Upload.this, "canceling upload", Toast.LENGTH_LONG)
                      .show();
              this.canceled = true;
              uploadSeekBar.setVisibility(View.INVISIBLE);
  
          }
  
          @Override
          protected Integer doInBackground(Void... voids)
          {
              uploaded = 0;
              try
              {
                  Iterator&lt;File&gt; it = this.files.iterator();
                  while (!canceled &amp;&amp; it.hasNext())
                  {
                      File file = it.next();
                      it.remove();
  
                      String msg = "";
  
                      try
                      {
                          if (debugMode)  // what is this debugMode
                          {
                                                  //Put your uploading code here.
                              msg = ("fake uploading " + file);
                              Thread.sleep(3000);
                          } else
                          {
                              msg = ("uploading: " + file);
                              controller.uploadFile(file, this.account); //Error: controller cannot be resolved
                          }
  
                          uploaded++;
                          publishProgress(msg);
  
                      } catch (IOException e)
                      {
                          controller.te("error uploading file: " + file);
                          controller.te("error uploading file: " + e);
                      } catch (InterruptedException e)
                      {
                      }
                  }
              } catch (Exception e)
              {
                  publishProgress("error uploading: " + e);
              }
  
              return uploaded;
          }
  
          @Override
          protected void onProgressUpdate(String... strings)
          {
              uploadSeekBar.setProgress(uploaded);
              updateUploadMessage(files.size());
              Toast.makeText(Upload.this, strings[0], Toast.LENGTH_LONG).show(); //Error: The method updateUploadMessage(int) is undefined for the type FirstActivity.Uploader 
          }
      }
  </code></pre>
  
  <p>But I facing some error which I mention as comment in the right side of that line. Please suggest me.</p>