diff --git a/shell/platform/android/android_shell_holder.cc b/shell/platform/android/android_shell_holder.cc index e99c76e961ed1..f2f39d4ca390c 100644 --- a/shell/platform/android/android_shell_holder.cc +++ b/shell/platform/android/android_shell_holder.cc @@ -181,8 +181,4 @@ fml::WeakPtr AndroidShellHolder::GetPlatformView() { return platform_view_; } -void AndroidShellHolder::NotifyLowMemoryWarning() { - FML_DCHECK(shell_); - shell_->NotifyLowMemoryWarning(); -} } // namespace flutter diff --git a/shell/platform/android/android_shell_holder.h b/shell/platform/android/android_shell_holder.h index 107e93f18672a..9ebd3c7fec62b 100644 --- a/shell/platform/android/android_shell_holder.h +++ b/shell/platform/android/android_shell_holder.h @@ -40,8 +40,6 @@ class AndroidShellHolder { void UpdateAssetManager(fml::RefPtr asset_manager); - void NotifyLowMemoryWarning(); - private: const flutter::Settings settings_; const std::shared_ptr jni_facade_; diff --git a/shell/platform/android/io/flutter/embedding/android/FlutterActivityAndFragmentDelegate.java b/shell/platform/android/io/flutter/embedding/android/FlutterActivityAndFragmentDelegate.java index b48ba568fc634..93ff3e7165e0c 100644 --- a/shell/platform/android/io/flutter/embedding/android/FlutterActivityAndFragmentDelegate.java +++ b/shell/platform/android/io/flutter/embedding/android/FlutterActivityAndFragmentDelegate.java @@ -629,9 +629,6 @@ void onUserLeaveHint() { void onTrimMemory(int level) { ensureAlive(); if (flutterEngine != null) { - // This is always an indication that the Dart VM should collect memory - // and free any unneeded resources. - flutterEngine.getDartExecutor().notifyLowMemoryWarning(); // Use a trim level delivered while the application is running so the // framework has a chance to react to the notification. if (level == TRIM_MEMORY_RUNNING_LOW) { @@ -654,7 +651,6 @@ void onTrimMemory(int level) { void onLowMemory() { Log.v(TAG, "Forwarding onLowMemory() to FlutterEngine."); ensureAlive(); - flutterEngine.getDartExecutor().notifyLowMemoryWarning(); flutterEngine.getSystemChannel().sendMemoryPressureWarning(); } diff --git a/shell/platform/android/io/flutter/embedding/engine/FlutterJNI.java b/shell/platform/android/io/flutter/embedding/engine/FlutterJNI.java index ea2449d5485c3..c6678ef478ce8 100644 --- a/shell/platform/android/io/flutter/embedding/engine/FlutterJNI.java +++ b/shell/platform/android/io/flutter/embedding/engine/FlutterJNI.java @@ -834,22 +834,6 @@ public Bitmap getBitmap() { // TODO(mattcarroll): determine if this is nonull or nullable private native Bitmap nativeGetBitmap(long nativePlatformViewId); - /** - * Notifies the Dart VM of a low memory event, or that the application is in a state such that now - * is an appropriate time to free resources, such as going to the background. - * - *

This is distinct from sending a SystemChannel message about low memory, which only notifies - * the running Flutter application. - */ - @UiThread - public void notifyLowMemoryWarning() { - ensureRunningOnMainThread(); - ensureAttachedToNative(); - nativeNotifyLowMemoryWarning(); - } - - private native void nativeNotifyLowMemoryWarning(); - private void ensureRunningOnMainThread() { if (Looper.myLooper() != mainLooper) { throw new RuntimeException( diff --git a/shell/platform/android/io/flutter/embedding/engine/dart/DartExecutor.java b/shell/platform/android/io/flutter/embedding/engine/dart/DartExecutor.java index 13b3ff05a62ea..fd8061325f9b7 100644 --- a/shell/platform/android/io/flutter/embedding/engine/dart/DartExecutor.java +++ b/shell/platform/android/io/flutter/embedding/engine/dart/DartExecutor.java @@ -232,19 +232,6 @@ public void setIsolateServiceIdListener(@Nullable IsolateServiceIdListener liste } } - /** - * Notify the Dart VM of a low memory event, or that the application is in a state such that now - * is an appropriate time to free resources, such as going to the background. - * - *

This does not notify a Flutter application about memory pressure. For that, use the {@link - * SystemChannel#sendMemoryPressureWarning}. - */ - public void notifyLowMemoryWarning() { - if (flutterJNI.isAttached()) { - flutterJNI.notifyLowMemoryWarning(); - } - } - /** * Configuration options that specify which Dart entrypoint function is executed and where to find * that entrypoint and other assets required for Dart execution. diff --git a/shell/platform/android/io/flutter/view/FlutterView.java b/shell/platform/android/io/flutter/view/FlutterView.java index e01f975303ed5..d5c79c9eb5459 100644 --- a/shell/platform/android/io/flutter/view/FlutterView.java +++ b/shell/platform/android/io/flutter/view/FlutterView.java @@ -320,7 +320,6 @@ public void onStop() { } public void onMemoryPressure() { - mNativeView.getFlutterJNI().notifyLowMemoryWarning(); systemChannel.sendMemoryPressureWarning(); } diff --git a/shell/platform/android/platform_view_android_jni_impl.cc b/shell/platform/android/platform_view_android_jni_impl.cc index 331f0350230d0..b89820227dccb 100644 --- a/shell/platform/android/platform_view_android_jni_impl.cc +++ b/shell/platform/android/platform_view_android_jni_impl.cc @@ -436,12 +436,6 @@ static void InvokePlatformMessageEmptyResponseCallback(JNIEnv* env, ); } -static void NotifyLowMemoryWarning(JNIEnv* env, - jobject obj, - jlong shell_holder) { - ANDROID_SHELL_HOLDER->NotifyLowMemoryWarning(); -} - static jboolean FlutterTextUtilsIsEmoji(JNIEnv* env, jobject obj, jint codePoint) { @@ -512,11 +506,6 @@ bool RegisterApi(JNIEnv* env) { .fnPtr = reinterpret_cast( &InvokePlatformMessageEmptyResponseCallback), }, - { - .name = "nativeNotifyLowMemoryWarning", - .signature = "()V", - .fnPtr = reinterpret_cast(&NotifyLowMemoryWarning), - }, // Start of methods from FlutterView { diff --git a/shell/platform/android/test/io/flutter/embedding/android/FlutterActivityAndFragmentDelegateTest.java b/shell/platform/android/test/io/flutter/embedding/android/FlutterActivityAndFragmentDelegateTest.java index 5c6198f8983be..e024f2530ab23 100644 --- a/shell/platform/android/test/io/flutter/embedding/android/FlutterActivityAndFragmentDelegateTest.java +++ b/shell/platform/android/test/io/flutter/embedding/android/FlutterActivityAndFragmentDelegateTest.java @@ -1,6 +1,6 @@ package io.flutter.embedding.android; -import static android.content.ComponentCallbacks2.*; +import static android.content.ComponentCallbacks2.TRIM_MEMORY_RUNNING_LOW; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.mockito.Matchers.any; @@ -442,7 +442,7 @@ public void itForwardsOnUserLeaveHintToFlutterEngine() { } @Test - public void itNotifiesDartExecutorAndSendsMessageOverSystemChannelWhenToldToTrimMemory() { + public void itSendsMessageOverSystemChannelWhenToldToTrimMemory() { // Create the real object that we're testing. FlutterActivityAndFragmentDelegate delegate = new FlutterActivityAndFragmentDelegate(mockHost); @@ -451,21 +451,14 @@ public void itNotifiesDartExecutorAndSendsMessageOverSystemChannelWhenToldToTrim delegate.onAttach(RuntimeEnvironment.application); // Emulate the host and call the method that we expect to be forwarded. - delegate.onTrimMemory(TRIM_MEMORY_RUNNING_MODERATE); delegate.onTrimMemory(TRIM_MEMORY_RUNNING_LOW); - delegate.onTrimMemory(TRIM_MEMORY_RUNNING_CRITICAL); - delegate.onTrimMemory(TRIM_MEMORY_BACKGROUND); - delegate.onTrimMemory(TRIM_MEMORY_COMPLETE); - delegate.onTrimMemory(TRIM_MEMORY_MODERATE); - delegate.onTrimMemory(TRIM_MEMORY_UI_HIDDEN); // Verify that the call was forwarded to the engine. - verify(mockFlutterEngine.getDartExecutor(), times(7)).notifyLowMemoryWarning(); verify(mockFlutterEngine.getSystemChannel(), times(1)).sendMemoryPressureWarning(); } @Test - public void itNotifiesDartExecutorAndSendsMessageOverSystemChannelWhenInformedOfLowMemory() { + public void itSendsMessageOverSystemChannelWhenInformedOfLowMemory() { // Create the real object that we're testing. FlutterActivityAndFragmentDelegate delegate = new FlutterActivityAndFragmentDelegate(mockHost); @@ -477,7 +470,6 @@ public void itNotifiesDartExecutorAndSendsMessageOverSystemChannelWhenInformedOf delegate.onLowMemory(); // Verify that the call was forwarded to the engine. - verify(mockFlutterEngine.getDartExecutor(), times(1)).notifyLowMemoryWarning(); verify(mockFlutterEngine.getSystemChannel(), times(1)).sendMemoryPressureWarning(); } diff --git a/shell/platform/android/test/io/flutter/embedding/engine/dart/DartExecutorTest.java b/shell/platform/android/test/io/flutter/embedding/engine/dart/DartExecutorTest.java index 6470651db3ed9..a17093686f610 100644 --- a/shell/platform/android/test/io/flutter/embedding/engine/dart/DartExecutorTest.java +++ b/shell/platform/android/test/io/flutter/embedding/engine/dart/DartExecutorTest.java @@ -6,7 +6,6 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; import android.content.res.AssetManager; import io.flutter.embedding.engine.FlutterJNI; @@ -39,14 +38,4 @@ public void itSendsBinaryMessages() { verify(fakeFlutterJni, times(1)) .dispatchPlatformMessage(eq("fake_channel"), eq(fakeMessage), anyInt(), anyInt()); } - - @Test - public void itNotifiesLowMemoryWarning() { - FlutterJNI mockFlutterJNI = mock(FlutterJNI.class); - when(mockFlutterJNI.isAttached()).thenReturn(true); - - DartExecutor dartExecutor = new DartExecutor(mockFlutterJNI, mock(AssetManager.class)); - dartExecutor.notifyLowMemoryWarning(); - verify(mockFlutterJNI, times(1)).notifyLowMemoryWarning(); - } }