Providing indeterministic progress feedback
Having started what we know to be a potentially long-running task, we probably want to let the user know that something is happening. There are a lot of ways of doing this, but a common approach is to present a dialog displaying a relevant message.
A good place to present our dialog is from the onPreExecute()
method of AsyncTask
which executes on the main thread so it is allowed to interact with the user interface.
The modified DownloadImageTask
will need a reference to a Context, so that it can prepare a ProgressDialog
, which it will show and dismiss in onPreExecute()
and onPostExecute()
respectively. As doInBackground()
has not changed, it is not shown in the following code, for brevity:
public class DownloadImageTask extends AsyncTask<URL, Integer, Bitmap> { ... private final WeakReference<Context> ctx; private ProgressDialog progress; ... public DownloadImageTask(Context ctx, ImageView imageView) { this.imageView =...