private void beginConversion() { final Serializable imageId = getImageId(); final Handler thumbnailHandler = new Handler() { @Override public void handleMessage(Message result) { final ImageConverter converter; synchronized (ImageSource.this) { converter = conversionJob; conversionJob = null; } final Throwable status = converter.getStatus(); if (null != status) { String msg = context.getResources().getString(R.string.image_load_error); Log.e(LOG_TAG, msg, status); context.alert(msg); } else { Bitmap thumbnail = converter.getBitmap(); synchronized (ImageSource.this) { setThumbnailCache(thumbnail); if (null != frame) { frame.removeAllViews(); showThumbnail(thumbnail); } } } } }; final ImageConverter converter = new ImageConverter(context, thumbnailHandler); converter.setImageId(imageId); converter.setMaxFrameDimension(getMaxThumbnailSize()); this.conversionJob = converter; context.submitBackgroundTask(converter); }