Don't understand the behavior when I retrieve Bitmap using Fresco using ImagePipeline . When I debug my code, it executes onNewResultImpl or onFailureImpl , and when I launch the application it doesnβt work, it doesnβt receive the call onFailureImpl or onNewResultImpl (I check it with Toast and Log when the application starts). I saw this SO question and take ref from it , as well as from Fresco's doc.
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == Activity.RESULT_OK) { switch (requestCode) { case ACTION_OPEN_GALLERY: mImageCaptureUri = data.getData(); if (mImageCaptureUri != null) { commentImgView.setImageURI(mImageCaptureUri);//mImageCaptureUri is working fine try { imageRequest = ImageRequestBuilder .newBuilderWithSource(mImageCaptureUri) .setRequestPriority(Priority.HIGH) .setLowestPermittedRequestLevel(ImageRequest.RequestLevel.FULL_FETCH) .build(); dataSource = imagePipeline.fetchDecodedImage(imageRequest, CommentActivity.this); dataSource.subscribe(new BaseBitmapDataSubscriber() { @Override protected void onNewResultImpl(@Nullable Bitmap bitmap) { if (bitmap != null) { bmp = Bitmap.createBitmap(bitmap); Log.d("Bitmap ","after callback"); Toast.makeText(CommentActivity.this,"has bitmap",Toast.LENGTH_SHORT).show(); } else { Log.d("Bitmap is null ","after callback"); Toast.makeText(CommentActivity.this,"bitmap is null",Toast.LENGTH_SHORT).show(); } } @Override protected void onFailureImpl(DataSource<CloseableReference<CloseableImage>> dataSource) { Log.d("Bitmap ","after callback failure"); Toast.makeText(CommentActivity.this,"Failure",Toast.LENGTH_SHORT).show(); } }, CallerThreadExecutor.getInstance()); } catch (Exception e){ e.printStackTrace(); } finally { if (dataSource != null) { dataSource.close(); } } } } } }
Note. I'm trying to get a bitmap from jpg image not from any animated gif
source share