未验证 提交 0a852d8a 编写于 作者: E Emmanuel Garcia 提交者: GitHub

Revert "Call Shell::NotifyLowMemoryWarning on Android Trim and LowMemory events (#18979)" (#19023)

This reverts commit f5ab179e.
上级 00656462
...@@ -181,8 +181,4 @@ fml::WeakPtr<PlatformViewAndroid> AndroidShellHolder::GetPlatformView() { ...@@ -181,8 +181,4 @@ fml::WeakPtr<PlatformViewAndroid> AndroidShellHolder::GetPlatformView() {
return platform_view_; return platform_view_;
} }
void AndroidShellHolder::NotifyLowMemoryWarning() {
FML_DCHECK(shell_);
shell_->NotifyLowMemoryWarning();
}
} // namespace flutter } // namespace flutter
...@@ -40,8 +40,6 @@ class AndroidShellHolder { ...@@ -40,8 +40,6 @@ class AndroidShellHolder {
void UpdateAssetManager(fml::RefPtr<flutter::AssetManager> asset_manager); void UpdateAssetManager(fml::RefPtr<flutter::AssetManager> asset_manager);
void NotifyLowMemoryWarning();
private: private:
const flutter::Settings settings_; const flutter::Settings settings_;
const std::shared_ptr<PlatformViewAndroidJNI> jni_facade_; const std::shared_ptr<PlatformViewAndroidJNI> jni_facade_;
......
...@@ -629,9 +629,6 @@ import java.util.Arrays; ...@@ -629,9 +629,6 @@ import java.util.Arrays;
void onTrimMemory(int level) { void onTrimMemory(int level) {
ensureAlive(); ensureAlive();
if (flutterEngine != null) { 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 // Use a trim level delivered while the application is running so the
// framework has a chance to react to the notification. // framework has a chance to react to the notification.
if (level == TRIM_MEMORY_RUNNING_LOW) { if (level == TRIM_MEMORY_RUNNING_LOW) {
...@@ -654,7 +651,6 @@ import java.util.Arrays; ...@@ -654,7 +651,6 @@ import java.util.Arrays;
void onLowMemory() { void onLowMemory() {
Log.v(TAG, "Forwarding onLowMemory() to FlutterEngine."); Log.v(TAG, "Forwarding onLowMemory() to FlutterEngine.");
ensureAlive(); ensureAlive();
flutterEngine.getDartExecutor().notifyLowMemoryWarning();
flutterEngine.getSystemChannel().sendMemoryPressureWarning(); flutterEngine.getSystemChannel().sendMemoryPressureWarning();
} }
......
...@@ -834,22 +834,6 @@ public class FlutterJNI { ...@@ -834,22 +834,6 @@ public class FlutterJNI {
// TODO(mattcarroll): determine if this is nonull or nullable // TODO(mattcarroll): determine if this is nonull or nullable
private native Bitmap nativeGetBitmap(long nativePlatformViewId); 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.
*
* <p>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() { private void ensureRunningOnMainThread() {
if (Looper.myLooper() != mainLooper) { if (Looper.myLooper() != mainLooper) {
throw new RuntimeException( throw new RuntimeException(
......
...@@ -232,19 +232,6 @@ public class DartExecutor implements BinaryMessenger { ...@@ -232,19 +232,6 @@ public class DartExecutor implements BinaryMessenger {
} }
} }
/**
* 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.
*
* <p>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 * Configuration options that specify which Dart entrypoint function is executed and where to find
* that entrypoint and other assets required for Dart execution. * that entrypoint and other assets required for Dart execution.
......
...@@ -320,7 +320,6 @@ public class FlutterView extends SurfaceView ...@@ -320,7 +320,6 @@ public class FlutterView extends SurfaceView
} }
public void onMemoryPressure() { public void onMemoryPressure() {
mNativeView.getFlutterJNI().notifyLowMemoryWarning();
systemChannel.sendMemoryPressureWarning(); systemChannel.sendMemoryPressureWarning();
} }
......
...@@ -436,12 +436,6 @@ static void InvokePlatformMessageEmptyResponseCallback(JNIEnv* env, ...@@ -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, static jboolean FlutterTextUtilsIsEmoji(JNIEnv* env,
jobject obj, jobject obj,
jint codePoint) { jint codePoint) {
...@@ -512,11 +506,6 @@ bool RegisterApi(JNIEnv* env) { ...@@ -512,11 +506,6 @@ bool RegisterApi(JNIEnv* env) {
.fnPtr = reinterpret_cast<void*>( .fnPtr = reinterpret_cast<void*>(
&InvokePlatformMessageEmptyResponseCallback), &InvokePlatformMessageEmptyResponseCallback),
}, },
{
.name = "nativeNotifyLowMemoryWarning",
.signature = "()V",
.fnPtr = reinterpret_cast<void*>(&NotifyLowMemoryWarning),
},
// Start of methods from FlutterView // Start of methods from FlutterView
{ {
......
package io.flutter.embedding.android; 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.assertEquals;
import static org.junit.Assert.assertNull; import static org.junit.Assert.assertNull;
import static org.mockito.Matchers.any; import static org.mockito.Matchers.any;
...@@ -442,7 +442,7 @@ public class FlutterActivityAndFragmentDelegateTest { ...@@ -442,7 +442,7 @@ public class FlutterActivityAndFragmentDelegateTest {
} }
@Test @Test
public void itNotifiesDartExecutorAndSendsMessageOverSystemChannelWhenToldToTrimMemory() { public void itSendsMessageOverSystemChannelWhenToldToTrimMemory() {
// Create the real object that we're testing. // Create the real object that we're testing.
FlutterActivityAndFragmentDelegate delegate = new FlutterActivityAndFragmentDelegate(mockHost); FlutterActivityAndFragmentDelegate delegate = new FlutterActivityAndFragmentDelegate(mockHost);
...@@ -451,21 +451,14 @@ public class FlutterActivityAndFragmentDelegateTest { ...@@ -451,21 +451,14 @@ public class FlutterActivityAndFragmentDelegateTest {
delegate.onAttach(RuntimeEnvironment.application); delegate.onAttach(RuntimeEnvironment.application);
// Emulate the host and call the method that we expect to be forwarded. // 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_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 that the call was forwarded to the engine.
verify(mockFlutterEngine.getDartExecutor(), times(7)).notifyLowMemoryWarning();
verify(mockFlutterEngine.getSystemChannel(), times(1)).sendMemoryPressureWarning(); verify(mockFlutterEngine.getSystemChannel(), times(1)).sendMemoryPressureWarning();
} }
@Test @Test
public void itNotifiesDartExecutorAndSendsMessageOverSystemChannelWhenInformedOfLowMemory() { public void itSendsMessageOverSystemChannelWhenInformedOfLowMemory() {
// Create the real object that we're testing. // Create the real object that we're testing.
FlutterActivityAndFragmentDelegate delegate = new FlutterActivityAndFragmentDelegate(mockHost); FlutterActivityAndFragmentDelegate delegate = new FlutterActivityAndFragmentDelegate(mockHost);
...@@ -477,7 +470,6 @@ public class FlutterActivityAndFragmentDelegateTest { ...@@ -477,7 +470,6 @@ public class FlutterActivityAndFragmentDelegateTest {
delegate.onLowMemory(); delegate.onLowMemory();
// Verify that the call was forwarded to the engine. // Verify that the call was forwarded to the engine.
verify(mockFlutterEngine.getDartExecutor(), times(1)).notifyLowMemoryWarning();
verify(mockFlutterEngine.getSystemChannel(), times(1)).sendMemoryPressureWarning(); verify(mockFlutterEngine.getSystemChannel(), times(1)).sendMemoryPressureWarning();
} }
......
...@@ -6,7 +6,6 @@ import static org.mockito.Matchers.eq; ...@@ -6,7 +6,6 @@ import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times; import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.content.res.AssetManager; import android.content.res.AssetManager;
import io.flutter.embedding.engine.FlutterJNI; import io.flutter.embedding.engine.FlutterJNI;
...@@ -39,14 +38,4 @@ public class DartExecutorTest { ...@@ -39,14 +38,4 @@ public class DartExecutorTest {
verify(fakeFlutterJni, times(1)) verify(fakeFlutterJni, times(1))
.dispatchPlatformMessage(eq("fake_channel"), eq(fakeMessage), anyInt(), anyInt()); .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();
}
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册