From 4b52d185acfae2d7e81a9aa2b3bafad253903f7d Mon Sep 17 00:00:00 2001 From: Felix Oghina Date: Thu, 3 Mar 2016 11:11:29 -0800 Subject: [PATCH] support simulating critical memory pressure, even when activity is destroyed Reviewed By: lexs Differential Revision: D2989094 fb-gh-sync-id: 17bbcac390ab1a3a745f1e85f7cb23d1dcf7043b shipit-source-id: 17bbcac390ab1a3a745f1e85f7cb23d1dcf7043b --- .../facebook/react/MemoryPressureRouter.java | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/MemoryPressureRouter.java b/ReactAndroid/src/main/java/com/facebook/react/MemoryPressureRouter.java index c209bef26..e9fd75748 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/MemoryPressureRouter.java +++ b/ReactAndroid/src/main/java/com/facebook/react/MemoryPressureRouter.java @@ -7,7 +7,7 @@ import java.util.LinkedHashSet; import java.util.Set; import android.annotation.TargetApi; -import android.app.Activity; +import android.app.Application; import android.content.ComponentCallbacks2; import android.content.Context; import android.content.res.Configuration; @@ -17,6 +17,7 @@ import com.facebook.react.bridge.MemoryPressure; import com.facebook.react.bridge.MemoryPressureListener; import static android.content.ComponentCallbacks2.TRIM_MEMORY_BACKGROUND; +import static android.content.ComponentCallbacks2.TRIM_MEMORY_COMPLETE; import static android.content.ComponentCallbacks2.TRIM_MEMORY_MODERATE; import static android.content.ComponentCallbacks2.TRIM_MEMORY_RUNNING_CRITICAL; @@ -25,8 +26,11 @@ import static android.content.ComponentCallbacks2.TRIM_MEMORY_RUNNING_CRITICAL; */ public class MemoryPressureRouter { // Trigger this by sending an intent to your activity with adb shell: - // am start -a "com.facebook.catalyst.ACTION_TRIM_MEMORY" --activity-single-top -n - private static final String ACTION_TRIM_MEMORY ="com.facebook.catalyst.ACTION_TRIM_MEMORY"; + // am broadcast -a com.facebook.catalyst.ACTION_TRIM_MEMORY_MODERATE + private static final String ACTION_TRIM_MEMORY_MODERATE = + "com.facebook.rnfeed.ACTION_TRIM_MEMORY_MODERATE"; + private static final String ACTION_TRIM_MEMORY_CRITICAL = + "com.facebook.rnfeed.ACTION_TRIM_MEMORY_CRITICAL"; private final Set mListeners = Collections.synchronizedSet(new LinkedHashSet()); @@ -46,11 +50,13 @@ public class MemoryPressureRouter { }; @TargetApi(Build.VERSION_CODES.JELLY_BEAN) - public static boolean handleDebugIntent(Activity activity, String action) { + public static boolean handleDebugIntent(Application application, String action) { switch (action) { - case ACTION_TRIM_MEMORY: - simulateTrimMemory(activity, TRIM_MEMORY_MODERATE); + case ACTION_TRIM_MEMORY_MODERATE: + simulateTrimMemory(application, TRIM_MEMORY_MODERATE); break; + case ACTION_TRIM_MEMORY_CRITICAL: + simulateTrimMemory(application, TRIM_MEMORY_COMPLETE); default: return false; } @@ -98,8 +104,7 @@ public class MemoryPressureRouter { } } - private static void simulateTrimMemory(Activity activity, int level) { - activity.getApplication().onTrimMemory(level); - activity.onTrimMemory(level); + private static void simulateTrimMemory(Application application, int level) { + application.onTrimMemory(level); } }