Когда вы запускаете длительный процесс на Android, всегда рекомендуется делать это в другом потоке.Затем вы можете использовать поток пользовательского интерфейса для отображения диалога прогресса.Вы не можете отобразить диалоговое окно прогресса в том же потоке (UI), в котором запущен процесс.
Для запуска процесса выполните следующие действия
pd = ProgressDialog.show(this, "Synchronizing data", "Please wait...");
Thread t = new Thread(this);
t.start();
Для этого в вашей деятельности должна быть реализована Runnable asследует
public class SyncDataActivity extends Activity implements Runnable
И, наконец, метод для выполнения длительного процесса
@Override
public void run() {
//your code here
}