você pode usar AsyncTask ..
verifique este código de trabalho ...
para chamar AsyncTask use new BackGround().execute();
classe privada BackGround estende AsyncTask
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(Instructions.this);
pDialog.setMessage("Please wait...");
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected Void doInBackground(Void... arg0) {
// here is your background process...
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
if (pDialog.isShowing())
pDialog.dismiss();
}
}