diff --git a/android/src/main/java/com/horcrux/svg/SvgView.java b/android/src/main/java/com/horcrux/svg/SvgView.java index 21d91127..f8d36fff 100644 --- a/android/src/main/java/com/horcrux/svg/SvgView.java +++ b/android/src/main/java/com/horcrux/svg/SvgView.java @@ -72,6 +72,12 @@ public class SvgView extends ViewGroup { SvgViewManager.setSvgView(this); } + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + SvgViewManager.dropSvgView(this); + } + public void setBitmap(Bitmap bitmap) { if (mBitmap != null) { mBitmap.recycle(); diff --git a/android/src/main/java/com/horcrux/svg/SvgViewManager.java b/android/src/main/java/com/horcrux/svg/SvgViewManager.java index 150e96e2..6f388741 100644 --- a/android/src/main/java/com/horcrux/svg/SvgViewManager.java +++ b/android/src/main/java/com/horcrux/svg/SvgViewManager.java @@ -51,6 +51,12 @@ class SvgViewManager extends ViewGroupManager { mTagToSvgView.put(svg.getId(), svg); } + static void dropSvgView(SvgView view) { + int tag = view.getId(); + mTagToShadowNode.remove(tag); + mTagToSvgView.remove(tag); + } + @SuppressWarnings("unused") static @Nullable SvgView getSvgViewByTag(int tag) { return mTagToSvgView.get(tag); @@ -77,13 +83,6 @@ class SvgViewManager extends ViewGroupManager { return node; } - @Override - public void onDropViewInstance(SvgView view) { - int tag = view.getId(); - mTagToShadowNode.remove(tag); - mTagToSvgView.remove(tag); - } - @Override protected SvgView createViewInstance(ThemedReactContext reactContext) { return new SvgView(reactContext);