deepaktwr / BitFrames

Frame of Bitmaps, Facebook like image sequence.
https://play.google.com/store/apps/details?id=proj.me.bitframedemo
Apache License 2.0
17 stars 4 forks source link

Weak reference problem in RV loading in FrameHandler #6

Open deepaktwr opened 7 years ago

deepaktwr commented 7 years ago

FrameHandler implementation might gets the messages regardless the context attachment to activity. As in ImageShading it is happening after bitmap manipulation and callback:

.
.

    @Override
    public void handleTransformedResult(Bitmap bitmap, BeanImage beanImage) {
        if(beanImage == null){
            Message message = frameHandler.obtainMessage(3, bitmap);
            frameHandler.sendMessageDelayed(message, 100);
            return;
        }
        BeanHandler beanHandler = new BeanHandler();
        beanHandler.setBitmap(bitmap);
        beanHandler.setBeanImage(beanImage);

        Message message = frameHandler.obtainMessage(1, beanHandler);
        message.sendToTarget();
    }

.
.

so that it would be a bad practice to keep a strong reference to the callback in FrameHandler:

.
.

 ImageResult imageResult;
        FrameHandler(ImageResult imageResult){
            this.imageResult = imageResult;
        }

.
.

Check WeakReference implementation in https://github.com/deepaktwr/BitFrames/commit/8a7a66aa8475d79603afeefa4097ef61c3ed1896

changing WeakReference to strong in FrameHandler might cause Activity leak #8