@Override
 protected void onPostExecute(Bitmap bitmap) {
   if (isCancelled()) {
     bitmap = null;
   }
   if (imageViewReference != null && bitmap != null) {
     final ImageView imageView = imageViewReference.get();
     final BitmapWorkerTask bitmapWorkerTask = getBitmapWorkerTask(imageView);
     if (this == bitmapWorkerTask && imageView != null) {
       imageView.setImageBitmap(bitmap);
     }
   } else {
     Savelog.e(TAG, "Unable to load " + key);
     if (hostFragmentReference != null) {
       ViewerFragment hostFragment = hostFragmentReference.get();
       Activity activity = hostFragment.getActivity();
       if (activity != null) {
         if (bitmap == null) {
           Savelog.e(TAG, "bitmap is null. Possibly due to OOM error");
           Toast.makeText(
                   hostFragment.getActivity(),
                   "Try to refresh this page by scrolling slowly.",
                   Toast.LENGTH_SHORT)
               .show();
         } else {
           Savelog.d(TAG, debug, "bitmap is not null for key " + key);
         }
       }
     }
   }
 }
    // once complete, see if ImageView is still around and set up bitmap
    @Override
    protected void onPostExecute(FileLoader fileLoader) {
      super.onPostExecute(fileLoader);

      if (isCancelled()) {
        fileLoader = null;
      }
      if (hostFragmentReference != null) {
        final ViewerFragment hostFragment = hostFragmentReference.get();
        if (hostFragment != null) {
          if (fileLoader != null) {
            hostFragment.mFileLoader = fileLoader;
            Toast.makeText(
                    hostFragment.getActivity(),
                    "Found " + fileLoader.getNumberOfPages() + " pages",
                    Toast.LENGTH_SHORT)
                .show();
          } else {
            hostFragment.mFileLoader = null;
            if (err != null) {
              Savelog.e(TAG, "Cannot fetch pdf" + "\n" + Savelog.getStack(err));
            }
            Toast.makeText(hostFragment.getActivity(), "Data unavailable", Toast.LENGTH_SHORT)
                .show();
          }
          // Callback upon finished fetching.
          hostFragment.onFetchingCompleted();
          // Detach host fragment from this task.
          hostFragment.mFetcherTask = null;
        }
      }
      Savelog.d(TAG, debug, "AsyncTask completed.");
    }
 @Override
 protected FileLoader doInBackground(Object... arg0) {
   FileLoader fileLoader = new FileLoader(filename);
   try {
     fileLoader.setup();
   } catch (Exception e) {
     err = e;
     Savelog.e(TAG, "Asyntask rendering unsuccessful." + "\n" + Savelog.getStack(e));
   }
   return fileLoader;
 }
    @Override
    protected Bitmap doInBackground(Object... params) {
      Bitmap bitmap = null;
      key = (String) params[0];
      int position = (Integer) params[1];
      Savelog.d(TAG, debug, "AsyncTask trying to load bitmap from cache");

      if (fileLoader == null) {
        Savelog.e(TAG, "file loader is null.");
      } else {
        int pageNumberNeeded = position + 1;
        bitmap = fileLoader.load(appContext, maxWidth, pageNumberNeeded, pageRange);
      }
      // bitmap could be null if oom error or cache flushed out.
      return bitmap;
    }