Perform an Action on showing AlertDialoge, then dismiss
up vote
0
down vote
favorite
I would like to start an AlertDialogue showing a loading message and a ProgressBar icon, then on showing the dialogue I would run the heavy processing with the ProgressBar spinning, and finally cancel the dialogue when the processing is over.
I have tried putting the logic on setOnShowListener of the alert dialogue which was not carried out. Then, I have tried starting the dialogue then using a delayed handler like the following:
new Handler().postDelayed(new Runnable()
@Override
public void run()
// heavy procssing logic
// alert.dismiss();
, 1000);
Though, the ProgressBar icon stopped spinning, so I assumed that my heavy processing blocked the UI. How do I achieve what I need. Thanks.
Edit: I have replaced the handler with new Thread() and everything worked properly. Would this approach cause any problems like memory leaks?
java android
add a comment |
up vote
0
down vote
favorite
I would like to start an AlertDialogue showing a loading message and a ProgressBar icon, then on showing the dialogue I would run the heavy processing with the ProgressBar spinning, and finally cancel the dialogue when the processing is over.
I have tried putting the logic on setOnShowListener of the alert dialogue which was not carried out. Then, I have tried starting the dialogue then using a delayed handler like the following:
new Handler().postDelayed(new Runnable()
@Override
public void run()
// heavy procssing logic
// alert.dismiss();
, 1000);
Though, the ProgressBar icon stopped spinning, so I assumed that my heavy processing blocked the UI. How do I achieve what I need. Thanks.
Edit: I have replaced the handler with new Thread() and everything worked properly. Would this approach cause any problems like memory leaks?
java android
1
New Thread method would be fine. But preferred method in android would be to use AsyncTask and show the dialog inside onPreExecute() method and do the heavy processing inside doInBackground() and hide the dialog inside onPostExecute() method.
– Mohammed Junaid
Nov 10 at 4:57
Thank for your the information, Mohammed.
– Jack
Nov 10 at 15:42
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I would like to start an AlertDialogue showing a loading message and a ProgressBar icon, then on showing the dialogue I would run the heavy processing with the ProgressBar spinning, and finally cancel the dialogue when the processing is over.
I have tried putting the logic on setOnShowListener of the alert dialogue which was not carried out. Then, I have tried starting the dialogue then using a delayed handler like the following:
new Handler().postDelayed(new Runnable()
@Override
public void run()
// heavy procssing logic
// alert.dismiss();
, 1000);
Though, the ProgressBar icon stopped spinning, so I assumed that my heavy processing blocked the UI. How do I achieve what I need. Thanks.
Edit: I have replaced the handler with new Thread() and everything worked properly. Would this approach cause any problems like memory leaks?
java android
I would like to start an AlertDialogue showing a loading message and a ProgressBar icon, then on showing the dialogue I would run the heavy processing with the ProgressBar spinning, and finally cancel the dialogue when the processing is over.
I have tried putting the logic on setOnShowListener of the alert dialogue which was not carried out. Then, I have tried starting the dialogue then using a delayed handler like the following:
new Handler().postDelayed(new Runnable()
@Override
public void run()
// heavy procssing logic
// alert.dismiss();
, 1000);
Though, the ProgressBar icon stopped spinning, so I assumed that my heavy processing blocked the UI. How do I achieve what I need. Thanks.
Edit: I have replaced the handler with new Thread() and everything worked properly. Would this approach cause any problems like memory leaks?
java android
java android
edited Nov 10 at 1:33
asked Nov 10 at 1:26
Jack
487
487
1
New Thread method would be fine. But preferred method in android would be to use AsyncTask and show the dialog inside onPreExecute() method and do the heavy processing inside doInBackground() and hide the dialog inside onPostExecute() method.
– Mohammed Junaid
Nov 10 at 4:57
Thank for your the information, Mohammed.
– Jack
Nov 10 at 15:42
add a comment |
1
New Thread method would be fine. But preferred method in android would be to use AsyncTask and show the dialog inside onPreExecute() method and do the heavy processing inside doInBackground() and hide the dialog inside onPostExecute() method.
– Mohammed Junaid
Nov 10 at 4:57
Thank for your the information, Mohammed.
– Jack
Nov 10 at 15:42
1
1
New Thread method would be fine. But preferred method in android would be to use AsyncTask and show the dialog inside onPreExecute() method and do the heavy processing inside doInBackground() and hide the dialog inside onPostExecute() method.
– Mohammed Junaid
Nov 10 at 4:57
New Thread method would be fine. But preferred method in android would be to use AsyncTask and show the dialog inside onPreExecute() method and do the heavy processing inside doInBackground() and hide the dialog inside onPostExecute() method.
– Mohammed Junaid
Nov 10 at 4:57
Thank for your the information, Mohammed.
– Jack
Nov 10 at 15:42
Thank for your the information, Mohammed.
– Jack
Nov 10 at 15:42
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
accepted
Create a new AsyncTask to do your work, this will cause any code placed in the “doInBackground()” method to be ran in a background thread, you have pre-execute and post-execute to run code on the main thread, my recommendation is create an alertDialog in the pre-execute methods and close it on the post-execute, using “publishProgress()” method In the doInBackground method to update your dialog as you need.
Otherwise instead of an alertDialog (or as well as) you can use a progressBar, simply have it in the view preciously, instantiate it as you normally would.
<ProgressBar
android:id=“+id/progressBar”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:centreInParent=true
android:indeterminate=true
android:visibility=gone />
ProgressBar progressBar = view.findViewById(R.id.progressBar)
Now when you want to show the progress bar use
progressBar.setVisibility(visible)
Or to hide
progressBar.setVisibility(gone)
I decided to go with the Thread solution myself. Though, it seems more people agree on the AsynTask approach. So, I have picked this as the answer. Thank you.
– Jack
Nov 10 at 15:43
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
accepted
Create a new AsyncTask to do your work, this will cause any code placed in the “doInBackground()” method to be ran in a background thread, you have pre-execute and post-execute to run code on the main thread, my recommendation is create an alertDialog in the pre-execute methods and close it on the post-execute, using “publishProgress()” method In the doInBackground method to update your dialog as you need.
Otherwise instead of an alertDialog (or as well as) you can use a progressBar, simply have it in the view preciously, instantiate it as you normally would.
<ProgressBar
android:id=“+id/progressBar”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:centreInParent=true
android:indeterminate=true
android:visibility=gone />
ProgressBar progressBar = view.findViewById(R.id.progressBar)
Now when you want to show the progress bar use
progressBar.setVisibility(visible)
Or to hide
progressBar.setVisibility(gone)
I decided to go with the Thread solution myself. Though, it seems more people agree on the AsynTask approach. So, I have picked this as the answer. Thank you.
– Jack
Nov 10 at 15:43
add a comment |
up vote
0
down vote
accepted
Create a new AsyncTask to do your work, this will cause any code placed in the “doInBackground()” method to be ran in a background thread, you have pre-execute and post-execute to run code on the main thread, my recommendation is create an alertDialog in the pre-execute methods and close it on the post-execute, using “publishProgress()” method In the doInBackground method to update your dialog as you need.
Otherwise instead of an alertDialog (or as well as) you can use a progressBar, simply have it in the view preciously, instantiate it as you normally would.
<ProgressBar
android:id=“+id/progressBar”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:centreInParent=true
android:indeterminate=true
android:visibility=gone />
ProgressBar progressBar = view.findViewById(R.id.progressBar)
Now when you want to show the progress bar use
progressBar.setVisibility(visible)
Or to hide
progressBar.setVisibility(gone)
I decided to go with the Thread solution myself. Though, it seems more people agree on the AsynTask approach. So, I have picked this as the answer. Thank you.
– Jack
Nov 10 at 15:43
add a comment |
up vote
0
down vote
accepted
up vote
0
down vote
accepted
Create a new AsyncTask to do your work, this will cause any code placed in the “doInBackground()” method to be ran in a background thread, you have pre-execute and post-execute to run code on the main thread, my recommendation is create an alertDialog in the pre-execute methods and close it on the post-execute, using “publishProgress()” method In the doInBackground method to update your dialog as you need.
Otherwise instead of an alertDialog (or as well as) you can use a progressBar, simply have it in the view preciously, instantiate it as you normally would.
<ProgressBar
android:id=“+id/progressBar”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:centreInParent=true
android:indeterminate=true
android:visibility=gone />
ProgressBar progressBar = view.findViewById(R.id.progressBar)
Now when you want to show the progress bar use
progressBar.setVisibility(visible)
Or to hide
progressBar.setVisibility(gone)
Create a new AsyncTask to do your work, this will cause any code placed in the “doInBackground()” method to be ran in a background thread, you have pre-execute and post-execute to run code on the main thread, my recommendation is create an alertDialog in the pre-execute methods and close it on the post-execute, using “publishProgress()” method In the doInBackground method to update your dialog as you need.
Otherwise instead of an alertDialog (or as well as) you can use a progressBar, simply have it in the view preciously, instantiate it as you normally would.
<ProgressBar
android:id=“+id/progressBar”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:centreInParent=true
android:indeterminate=true
android:visibility=gone />
ProgressBar progressBar = view.findViewById(R.id.progressBar)
Now when you want to show the progress bar use
progressBar.setVisibility(visible)
Or to hide
progressBar.setVisibility(gone)
answered Nov 10 at 3:51
Brandon
11018
11018
I decided to go with the Thread solution myself. Though, it seems more people agree on the AsynTask approach. So, I have picked this as the answer. Thank you.
– Jack
Nov 10 at 15:43
add a comment |
I decided to go with the Thread solution myself. Though, it seems more people agree on the AsynTask approach. So, I have picked this as the answer. Thank you.
– Jack
Nov 10 at 15:43
I decided to go with the Thread solution myself. Though, it seems more people agree on the AsynTask approach. So, I have picked this as the answer. Thank you.
– Jack
Nov 10 at 15:43
I decided to go with the Thread solution myself. Though, it seems more people agree on the AsynTask approach. So, I have picked this as the answer. Thank you.
– Jack
Nov 10 at 15:43
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53235237%2fperform-an-action-on-showing-alertdialoge-then-dismiss%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
New Thread method would be fine. But preferred method in android would be to use AsyncTask and show the dialog inside onPreExecute() method and do the heavy processing inside doInBackground() and hide the dialog inside onPostExecute() method.
– Mohammed Junaid
Nov 10 at 4:57
Thank for your the information, Mohammed.
– Jack
Nov 10 at 15:42