public BitmapWorkerTask GetBitmapWorkerTask() { BitmapWorkerTask task = null; bitmapWorkerTaskReference.TryGetTarget(out task); return(task); }
public static void StartNew(ImageView imageView, string url, Resources resources) { if (CancelPotentialWork(url, imageView)) { BitmapWorkerTask task = new BitmapWorkerTask(imageView, resources); AsyncDrawable asyncDrawable = new AsyncDrawable(resources, null, task); imageView.SetImageDrawable(asyncDrawable); task.Execute(url); } }
static bool CancelPotentialWork(string url, ImageView imageView) { BitmapWorkerTask bitmapWorkerTask = getBitmapWorkerTask(imageView); if (bitmapWorkerTask != null) { string bitmapUrl = bitmapWorkerTask.url; if (bitmapUrl == "" || bitmapUrl != url) { bitmapWorkerTask.Cancel(true); } else { return(false); } } return(true); }
protected override void OnPostExecute(Bitmap bitmap) { if (IsCancelled) { bitmap = null; } if (imageViewReference != null && bitmap != null) { ImageView imageView = null; imageViewReference.TryGetTarget(out imageView); BitmapWorkerTask bitmapWorkerTask = getBitmapWorkerTask(imageView); if (this == bitmapWorkerTask && imageView != null) { imageView.SetImageDrawable(new BitmapDrawable(bitmap)); } } }
public AsyncDrawable(Resources res, Bitmap bitmap, BitmapWorkerTask bitmapWorkerTask) : base(res, bitmap) { bitmapWorkerTaskReference = new WeakReference <BitmapWorkerTask>(bitmapWorkerTask); }