Cache compositions loaded by url in memory

diff --git a/lottie/src/main/java/com/airbnb/lottie/LottieCompositionFactory.java b/lottie/src/main/java/com/airbnb/lottie/LottieCompositionFactory.java
index f4a1a6a..0c686f7 100644
--- a/lottie/src/main/java/com/airbnb/lottie/LottieCompositionFactory.java
+++ b/lottie/src/main/java/com/airbnb/lottie/LottieCompositionFactory.java
@@ -86,7 +86,11 @@
     return cache(cacheKey, new Callable<LottieResult<LottieComposition>>() {
       @Override
       public LottieResult<LottieComposition> call() {
-        return L.networkFetcher(context).fetchSync(url, cacheKey);
+        LottieResult<LottieComposition> result = L.networkFetcher(context).fetchSync(url, cacheKey);
+        if (cacheKey != null && result.getValue() != null) {
+          LottieCompositionCache.getInstance().put(cacheKey, result.getValue());
+        }
+        return result;
       }
     });
   }
@@ -109,7 +113,11 @@
    */
   @WorkerThread
   public static LottieResult<LottieComposition> fromUrlSync(Context context, String url, @Nullable String cacheKey) {
-    return L.networkFetcher(context).fetchSync(url, cacheKey);
+    LottieResult<LottieComposition> result = L.networkFetcher(context).fetchSync(url, cacheKey);
+    if (cacheKey != null && result.getValue() != null) {
+      LottieCompositionCache.getInstance().put(cacheKey, result.getValue());
+    }
+    return result;
   }
 
   /**