How do you display a progress dialog before starting an activity (i.e., while the activity is loading some data) in Android?
ProgressDialog dialog = ProgressDialog. show(this, "", "Detecting...", true); dialog. show(); dialog. dismiss();
You should load data in an AsyncTask and update your interface when the data finishes loading.
You could even start a new activity in your AsyncTask's onPostExecute()
method.
More specifically, you will need a new class that extends AsyncTask:
public class MyTask extends AsyncTask<Void, Void, Void> { public MyTask(ProgressDialog progress) { this.progress = progress; } public void onPreExecute() { progress.show(); } public void doInBackground(Void... unused) { ... do your loading here ... } public void onPostExecute(Void unused) { progress.dismiss(); } }
Then in your activity you would do:
ProgressDialog progress = new ProgressDialog(this); progress.setMessage("Loading..."); new MyTask(progress).execute();
When you start a long-running process on Android, its always advisable to do it on another thread. You can then use the UI thread to display a progress dialog. You cannot display a progress dialog in the same (UI) thread in which the process is running.
Do the following to start your process
pd = ProgressDialog.show(this, "Synchronizing data", "Please wait..."); Thread t = new Thread(this); t.start();
For this your activity should implement Runnable as follows
public class SyncDataActivity extends Activity implements Runnable
And finally a method to perform the long-running process
@Override public void run() { //your code here }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With