From 69c8dd50fe37b78207b49356d936a547b07685ce Mon Sep 17 00:00:00 2001 From: Alexander Blom Date: Tue, 24 Nov 2015 09:47:26 -0800 Subject: [PATCH] Avoid leaking FrescoModule when setting SoLoaderShim handler Summary: The anonymous class had an implicit reference back to FrescoModule that would in turn retain the context. public Reviewed By: astreet Differential Revision: D2690747 fb-gh-sync-id: 8a97c102e461b903c6adf7c65956baf364fa5faf --- .../react/modules/fresco/FrescoModule.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/FrescoModule.java b/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/FrescoModule.java index 14b95c0ae..666acc2fe 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/FrescoModule.java +++ b/ReactAndroid/src/main/java/com/facebook/react/modules/fresco/FrescoModule.java @@ -65,13 +65,7 @@ public class FrescoModule extends ReactContextBaseJavaModule implements super.initialize(); // Make sure the SoLoaderShim is configured to use our loader for native libraries. // This code can be removed if using Fresco from Maven rather than from source - SoLoaderShim.setHandler( - new SoLoaderShim.Handler() { - @Override - public void loadLibrary(String libraryName) { - SoLoader.loadLibrary(libraryName); - } - }); + SoLoaderShim.setHandler(new FrescoHandler()); HashSet requestListeners = new HashSet<>(); requestListeners.add(new SystraceRequestListener()); @@ -110,4 +104,11 @@ public class FrescoModule extends ReactContextBaseJavaModule implements imagePipelineFactory.getMainDiskStorageCache().clearAll(); imagePipelineFactory.getSmallImageDiskStorageCache().clearAll(); } + + private static class FrescoHandler implements SoLoaderShim.Handler { + @Override + public void loadLibrary(String libraryName) { + SoLoader.loadLibrary(libraryName); + } + } }