Providing feedback to the user
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. Hence, it is allowed to interact with the user interface.
The modified PrimesTask
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 PrimesTask extends AsyncTask<Integer, Void, BigInteger>{ private Context ctx; private ProgressDialog progress; private TextView resultView; public PrimesTask(Context ctx, TextView resultView) { this.ctx = ctx; this.resultView = resultView; } ...