package vandy.mooc.view; import java.lang.ref.WeakReference; import android.graphics.Bitmap; import android.os.AsyncTask; /** * This class downloads a bitmap image in the background * using AsyncTask. */ public class DownloadWithAsyncTask extends AsyncTask<String, Integer, Bitmap> { /** * WeakReference enable garbage collection of Activity. */ WeakReference<ImageDownloadsActivity> mActivity; /** * Constructor initializes the field. */ DownloadWithAsyncTask(ImageDownloadsActivity activity) { mActivity = new WeakReference<>(activity); } /** * Called by the AsyncTask framework in the UI Thread to perform * initialization actions. */ protected void onPreExecute() { // Show the progress dialog before starting the download // in a Background Thread. mActivity.get().showDialog("downloading via AsyncTask"); } /** * Downloads bitmap in an AsyncTask background thread. * * @param params * The url of a bitmap image */ protected Bitmap doInBackground(String... urls) { return mActivity.get().downloadBitmap(urls[0]); } /** * Called after an operation executing in the background is * completed. It sets the bitmap image to an image view and * dismisses the progress dialog. * * @param image * The bitmap image */ protected void onPostExecute(Bitmap image) { // Dismiss the progress dialog. mActivity.get().dismissDialog(); // Display the downloaded image to the user. mActivity.get().displayBitmap(image); } }