title: processdialog don't show on app
body: <p>I want load info invoice from server to client.but during loading, process dialog not be shown, so I do not know the load when it will be completed. Can you help me? Or is there a way to display dialog in the load process, please guide me!</p>
  
  <p>Code callUrl</p>
  
  <pre><code>public class CallUrl extends AsyncTask&lt;String, Integer, String&gt; {
  
  public static final int POST_TASK = 1;
  public static final int GET_TASK = 2;         
  private static final String TAG = "WebServiceTask";
  // thời gian chờ của một kết nối, tính theo milliseconds (waiting to connect)
  private static final int CONN_TIMEOUT = 3000; 
  // thời gian chờ của một socket, tính bằng milliseconds (waiting for data)
  private static final int SOCKET_TIMEOUT = 5000;   
  private int taskType = GET_TASK;
  private Context mContext = null;
  private String processMessage = "Processing...";
  private ArrayList&lt;NameValuePair&gt; params = new ArrayList&lt;NameValuePair&gt;();
  private ProgressDialog pDlg = null;
  
  //Khởi tạo
  public CallUrl(int taskType, Context mContext, String processMessage) {
  
      this.taskType = taskType;
      this.mContext = mContext;
      this.processMessage = processMessage;
  }
  
  @Override
  protected void onPostExecute(String result) {
      pDlg.dismiss();
  }
  
  //thêm thông tin cần thiết để gửi lên server 
  public void addNameValuePair(String name, String value) {
  
      params.add(new BasicNameValuePair(name, value));
  }
  
  //Hiển thị dialog trong quá trình load data
  private void showProgressDialog() {
  
      pDlg = new ProgressDialog(mContext);
      pDlg.setMessage(processMessage);
      pDlg.setProgressDrawable(mContext.getWallpaper());
      pDlg.setProgressStyle(ProgressDialog.STYLE_SPINNER);
      pDlg.setCancelable(false);
      pDlg.show();
  }
  
  @Override
  protected void onPreExecute() {
  
      showProgressDialog();
  }
  
  //kết nối đến server thông url
  protected String doInBackground(String... urls) {
      String url = urls[0];
      String result = "";
      HttpResponse response = doResponse(url);
      if (response == null) {
          return result;
      } else {
          try {
  
              result = inputStreamToString(response.getEntity().getContent());
  
          } catch (IllegalStateException e) {
              Log.e(TAG, e.getLocalizedMessage(), e);
  
          } catch (IOException e) {
              Log.e(TAG, e.getLocalizedMessage(), e);
          }
      }
      return result;
  }
  
  // khởi tạo socket và kết nối
  private HttpParams getHttpParams() {
  
      HttpParams htpp = new BasicHttpParams();   
      HttpConnectionParams.setConnectionTimeout(htpp, CONN_TIMEOUT);
      HttpConnectionParams.setSoTimeout(htpp, SOCKET_TIMEOUT); 
      return htpp;
  }
  
  //thao tác xử lý khi kết nối đến server 
  private HttpResponse doResponse(String url) {
  
      HttpClient httpclient = new DefaultHttpClient(getHttpParams());
      HttpResponse response = null;
  
      try {
          switch (taskType) {
  
          case POST_TASK:
              HttpPost httppost = new HttpPost(url);
              // Add parameters
              httppost.setEntity(new UrlEncodedFormEntity(params));
              response = httpclient.execute(httppost);
              break;
          case GET_TASK:
              HttpGet httpget = new HttpGet(url);
              response = httpclient.execute(httpget);
              break;
          }
      } catch (Exception e) {
  
          Log.e(TAG, e.getLocalizedMessage(), e);
  
      }
  
      return response;
  }
  
  //Chuyển thông tin nhận về thành dạng chuỗi
  private String inputStreamToString(InputStream is) {
  
      String line = "";
      StringBuilder total = new StringBuilder();
      BufferedReader rd = new BufferedReader(new InputStreamReader(is));
      try {
          // đọc thông tin nhận được cho đến khi kết thúc
          while ((line = rd.readLine()) != null) {
              total.append(line);
          }
      } catch (IOException e) {
          Log.e(TAG, e.getLocalizedMessage(), e);
      }
  
      // Trả về giá trị chuỗi đầy đủ
      return total.toString();
  }
  
  }
  </code></pre>
  
  <p>Code main</p>
  
  <pre><code>public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.invoice);
      doTimerTask();
  
      }
    public void doTimerTask() {
      TimerTask mTimerTask;
      Timer t = new Timer();
      final Handler handler = new Handler();
      mTimerTask = new TimerTask() {
          public void run() {
              handler.post(new Runnable() {
                  public void run() {
                      testNetwork();
                      Log.d("TIMER", "TimerTask run");
                  }
              });
          }
      };
      // public void schedule (TimerTask task, long delay, long period)
      t.schedule(mTimerTask, 500, 300000); //
  }
    public void testNetwork()
  {
      // Kiểm tra kết nối đến server
      TestConnectionNew test = new TestConnectionNew();
      try {
          String recieve = test.execute("http://longvansolution.tk/monthlytarget.php").get();
          if (recieve.equalsIgnoreCase("true") &amp;&amp; isNetworkAvailable() == true)
          {
              loaddata();
          }
          else if (recieve.equalsIgnoreCase("false") || isNetworkAvailable() == false)
          {
              String mess = "Không thể kết nối đến server hoặc thiết bị chưa có kết nối mạng!";
              Toast.makeText(Invoice.this, mess, Toast.LENGTH_SHORT).show();
          }
  
      } catch (InterruptedException e) {
          e.printStackTrace();
      } catch (ExecutionException e) {
          e.printStackTrace();
      }
  }
    public void workoffline()
  {
      clearArray();
      try {
          mDb.openDB();
          Cursor mCursor = mDb.getAllInvoice(IDDelivery);
          if (mCursor.moveToFirst()) {
              do {
                  codeInvoiceArray.add(mCursor.getString(1));
                  nameArray.add(mCursor.getString(2));
                  phonenumberArray.add(mCursor.getString(3));
                  addressArray.add(mCursor.getString(4));
                  urlArray.add(mCursor.getString(5));
  
              } while (mCursor.moveToNext());
              loaddatalistview();
          }
          mDb.closeDB();
      } catch (Exception e) {
          e.printStackTrace();
      }
  
  }
  
  // lấy dữ liệu từ server về thiết bị
  public void loaddata()
  {
      String phonenumber, name, address, url, code;
      JSONArray jArray;
      try
      {
          clearArray();
          String sampleURL = SERVICE_URL + "/monthlytarget.php";
          CallUrl wst = new CallUrl(CallUrl.GET_TASK, this, "Lấy thông tin hóa đơn...");
          String result = wst.execute(new String[] {
                  sampleURL
          }).get();
  
          if (result.equalsIgnoreCase(""))
          {
              notification("Hôm nay không còn gì để giao!");
          }
          else
          {
              JSONObject json_data = null;
              JSONObject jsonObject = new JSONObject(result);
              jArray = jsonObject.getJSONArray("Orders");
              // Mở kết nối đến database
              mDb.openDB();
  
              // sử dụng json lấy các giá trị thông qua các key
              // gán nó vào các mảng tương ứng
              for (int i = 0; i &lt; jArray.length(); i++) {
                  json_data = jArray.getJSONObject(i);
  
                  // Lây thông tin theo mã id của người giao hàng
                  if (json_data.getString("DeliveryId").equalsIgnoreCase(IDDelivery))
                  {
                      phonenumber = json_data.getString("PhoneNumber");
                      address = json_data.getString("Address");
                      name = json_data.getString("CustomerName");
                      url = json_data.getString("Url");
                      code = json_data.getString("CodeInvoice");
                      save(code, url);
                      // Kiểm tra mã hóa đơn này đã có trong database chưa
                      // nếu chưa sẽ thêm data vào databse
                      // nếu đã có rồi sẽ cập nhật lại thông tin thông qua mã
                      // hóa đơn
                      if (mDb.test(code) == true)
                      {
                          mDb.insert(code, name, phonenumber, address, url, "PACKED",
                                  IDDelivery);
                      }
                      else
                      {
                          mDb.editAll(code, name, phonenumber, address, url, IDDelivery, "PACKED");
  
                      }
                  }
              }
              // Thực hiện xong, đóng kết nối
              mDb.closeDB();
          }
      } catch (Exception e)
      {
          e.printStackTrace();
      }
      // Hiển thị thông tin nhận được lên listview
      workoffline();
  }
  </code></pre>