 <p>I think by calling <code>AsyncTask</code> in <code>for</code> loop, it might start another task while the previous one still in <code>doInbackground()</code> that will result in multiple progress running because of this:</p> <p><code>pDialog = new ProgressDialog(getActivity());</code></p> <p>You will have a reference on the last started progress, so <strong>calling dismiss will only hide last one, while the other X progress(es) will remain active</strong>.</p> <p>So, either:</p> <ol> <li>Start the progress one time, before starting the <code>for loop</code> and stop it at <code>onPostExecute()</code> of last asyncTask</li> </ol> <p>Or </p> <ol start="2"> <li>Move the for loop inside <code>doInBackground()</code> as @StackOverflowUser stated</li> </ol>