diff --git a/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/FlutterEngineCache.java b/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/FlutterEngineCache.java index d75ea03a804..76fbfdd01c6 100644 --- a/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/FlutterEngineCache.java +++ b/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/FlutterEngineCache.java @@ -82,4 +82,9 @@ public class FlutterEngineCache { public void remove(@NonNull String engineId) { put(engineId, null); } + + /** Removes all {@link FlutterEngine}'s that are currently in the cache. */ + public void clear() { + cachedEngines.clear(); + } } diff --git a/engine/src/flutter/shell/platform/android/test/io/flutter/embedding/engine/FlutterEngineCacheTest.java b/engine/src/flutter/shell/platform/android/test/io/flutter/embedding/engine/FlutterEngineCacheTest.java index ff584b86484..e552611cdab 100644 --- a/engine/src/flutter/shell/platform/android/test/io/flutter/embedding/engine/FlutterEngineCacheTest.java +++ b/engine/src/flutter/shell/platform/android/test/io/flutter/embedding/engine/FlutterEngineCacheTest.java @@ -55,4 +55,26 @@ public class FlutterEngineCacheTest { // --- Verify Results --- assertNull(cache.get("my_flutter_engine")); } + + @Test + public void itRemovesAllFlutterEngines() { + // --- Test Setup --- + FlutterEngine flutterEngine = mock(FlutterEngine.class); + FlutterEngine flutterEngine2 = mock(FlutterEngine.class); + FlutterEngineCache cache = new FlutterEngineCache(); + + // --- Execute Test --- + cache.put("my_flutter_engine", flutterEngine); + cache.put("my_flutter_engine_2", flutterEngine2); + + // --- Verify Results --- + assertEquals(flutterEngine, cache.get("my_flutter_engine")); + assertEquals(flutterEngine2, cache.get("my_flutter_engine_2")); + + cache.clear(); + + // --- Verify Results --- + assertNull(cache.get("my_flutter_engine")); + assertNull(cache.get("my_flutter_engine_2")); + } }