DrawView icon indicating copy to clipboard operation
DrawView copied to clipboard

Cannot set background image loaded via Glide

Open ankitivo opened this issue 4 years ago • 0 comments

Hi,

The view crashes after setting a bitmap (as background image) loaded via Glide.

Load the image

Glide.with(this)
                .asBitmap()
                .load(Uri.parse(args.getImageUri()))
                .into(new DrawViewTarget(binding.drawView));

Set as background

private static class DrawViewTarget extends CustomViewTarget<DrawView, Bitmap> {

        public DrawViewTarget(@NonNull DrawView view) {
            super(view);
        }

        @Override
        protected void onResourceCleared(@Nullable Drawable placeholder) {
        }

        @Override
        public void onLoadFailed(@Nullable Drawable errorDrawable) {
        }

        @Override
        public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
            getView().setBackgroundImage(resource, BackgroundType.BITMAP, BackgroundScale.CENTER_INSIDE);
        }
    }

Exit the activity

java.lang.IllegalStateException: Cannot obtain size for recycled Bitmap: android.graphics.Bitmap@65c2b97[1440x2560] ARGB_8888
        at com.bumptech.glide.util.Util.getBitmapByteSize(Util.java:81)
        at com.bumptech.glide.load.resource.bitmap.BitmapResource.getSize(BitmapResource.java:52)
        at com.bumptech.glide.load.engine.EngineResource.getSize(EngineResource.java:62)
        at com.bumptech.glide.load.engine.cache.LruResourceCache.getSize(LruResourceCache.java:40)
        at com.bumptech.glide.load.engine.cache.LruResourceCache.getSize(LruResourceCache.java:11)
        at com.bumptech.glide.util.LruCache.put(LruCache.java:131)
        at com.bumptech.glide.load.engine.cache.LruResourceCache.put(LruResourceCache.java:11)
        at com.bumptech.glide.load.engine.Engine.onResourceReleased(Engine.java:397)
        at com.bumptech.glide.load.engine.EngineResource.release(EngineResource.java:116)
        at com.bumptech.glide.load.engine.Engine.release(Engine.java:363)
        at com.bumptech.glide.request.SingleRequest.clear(SingleRequest.java:328)
        at com.bumptech.glide.manager.RequestTracker.clearAndRemove(RequestTracker.java:72)
        at com.bumptech.glide.RequestManager.untrack(RequestManager.java:660)
        at com.bumptech.glide.RequestManager.untrackOrDelegate(RequestManager.java:628)
        at com.bumptech.glide.RequestManager.clear(RequestManager.java:624)
        at com.bumptech.glide.RequestManager.onDestroy(RequestManager.java:371)
        at com.bumptech.glide.manager.ActivityFragmentLifecycle.onDestroy(ActivityFragmentLifecycle.java:65)
        at com.bumptech.glide.manager.SupportRequestManagerFragment.onDestroy(SupportRequestManagerFragment.java:215)
        at androidx.fragment.app.Fragment.performDestroy(Fragment.java:3206)
        at androidx.fragment.app.FragmentStateManager.destroy(FragmentStateManager.java:771)
        at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:350)
        at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:112)
        at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1636)
        at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3112)
        at androidx.fragment.app.FragmentManager.dispatchDestroy(FragmentManager.java:3091)
        at androidx.fragment.app.Fragment.performDestroy(Fragment.java:3201)
        at androidx.fragment.app.FragmentStateManager.destroy(FragmentStateManager.java:771)
        at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:350)
        at androidx.fragment.app.SpecialEffectsController$FragmentStateManagerOperation.complete(SpecialEffectsController.java:742)
        at androidx.fragment.app.SpecialEffectsController$Operation.completeSpecialEffect(SpecialEffectsController.java:669)
        at androidx.fragment.app.DefaultSpecialEffectsController$SpecialEffectsInfo.completeSpecialEffect(DefaultSpecialEffectsController.java:755)
        at androidx.fragment.app.DefaultSpecialEffectsController$9.run(DefaultSpecialEffectsController.java:631)
        at androidx.transition.FragmentTransitionSupport$5.onTransitionEnd(FragmentTransitionSupport.java:280)
        at androidx.transition.Transition.end(Transition.java:1965)
        at androidx.transition.TransitionSet$TransitionSetListener.onTransitionEnd(TransitionSet.java:451)
        at androidx.transition.Transition.end(Transition.java:1965)
        at androidx.transition.Transition$3.onAnimationEnd(Transition.java:1914)
        at android.animation.Animator$AnimatorListener.onAnimationEnd(Animator.java:554)
        at android.animation.AnimatorSet.endAnimation(AnimatorSet.java:1301)
        at android.animation.AnimatorSet.doAnimationFrame(AnimatorSet.java:1086)
        at android.animation.AnimationHandler.doAnimationFrame(AnimationHandler.java:146)
        at android.animation.AnimationHandler.access$100(AnimationHandler.java:37)
        at android.animation.AnimationHandler$1.doFrame(AnimationHandler.java:54)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:970)
        at android.view.Choreographer.doCallbacks(Choreographer.java:796)
2021-02-25 23:07:51.952 17067-17067/a.b.c E/AndroidRuntime:     at android.view.Choreographer.doFrame(Choreographer.java:727)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:957)
        at android.os.Handler.handleCallback(Handler.java:907)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7478)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:549)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:941)

ankitivo avatar Feb 25 '21 17:02 ankitivo