Skip to content

Commit 37754c5

Browse files
cwdickfacebook-github-bot
authored andcommitted
refactor MemoryPressureListener to use Android levels
Reviewed By: bnham Differential Revision: D5603426 fbshipit-source-id: 6d09a56544c27e46f4b9ef491798720e37214e47
1 parent 8b2975a commit 37754c5

File tree

3 files changed

+14
-66
lines changed

3 files changed

+14
-66
lines changed

ReactAndroid/src/main/java/com/facebook/react/MemoryPressureRouter.java

Lines changed: 5 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -2,60 +2,21 @@
22

33
package com.facebook.react;
44

5-
import java.util.Collections;
6-
import java.util.LinkedHashSet;
7-
import java.util.Set;
8-
9-
import android.annotation.TargetApi;
10-
import android.app.Application;
115
import android.content.ComponentCallbacks2;
126
import android.content.Context;
137
import android.content.res.Configuration;
14-
import android.os.Build;
15-
16-
import com.facebook.react.bridge.MemoryPressure;
178
import com.facebook.react.bridge.MemoryPressureListener;
18-
19-
import static android.content.ComponentCallbacks2.TRIM_MEMORY_BACKGROUND;
20-
import static android.content.ComponentCallbacks2.TRIM_MEMORY_COMPLETE;
21-
import static android.content.ComponentCallbacks2.TRIM_MEMORY_MODERATE;
22-
import static android.content.ComponentCallbacks2.TRIM_MEMORY_RUNNING_CRITICAL;
23-
import static android.content.ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN;
9+
import java.util.Collections;
10+
import java.util.LinkedHashSet;
11+
import java.util.Set;
2412

2513
/**
2614
* Translates and routes memory pressure events to the current catalyst instance.
2715
*/
2816
public class MemoryPressureRouter implements ComponentCallbacks2 {
29-
// Trigger this by sending an intent to your activity with adb shell:
30-
// am broadcast -a com.facebook.react.ACTION_TRIM_MEMORY_MODERATE
31-
private static final String ACTION_TRIM_MEMORY_UI_HIDDEN =
32-
"com.facebook.react.ACTION_TRIM_MEMORY_UI_HIDDEN";
33-
private static final String ACTION_TRIM_MEMORY_MODERATE =
34-
"com.facebook.react.ACTION_TRIM_MEMORY_MODERATE";
35-
private static final String ACTION_TRIM_MEMORY_CRITICAL =
36-
"com.facebook.react.ACTION_TRIM_MEMORY_CRITICAL";
37-
3817
private final Set<MemoryPressureListener> mListeners =
3918
Collections.synchronizedSet(new LinkedHashSet<MemoryPressureListener>());
4019

41-
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
42-
public static boolean handleDebugIntent(Application application, String action) {
43-
switch (action) {
44-
case ACTION_TRIM_MEMORY_UI_HIDDEN:
45-
simulateTrimMemory(application, ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN);
46-
break;
47-
case ACTION_TRIM_MEMORY_MODERATE:
48-
simulateTrimMemory(application, TRIM_MEMORY_MODERATE);
49-
break;
50-
case ACTION_TRIM_MEMORY_CRITICAL:
51-
simulateTrimMemory(application, TRIM_MEMORY_COMPLETE);
52-
default:
53-
return false;
54-
}
55-
56-
return true;
57-
}
58-
5920
MemoryPressureRouter(Context context) {
6021
context.getApplicationContext().registerComponentCallbacks(this);
6122
}
@@ -80,13 +41,7 @@ public void removeMemoryPressureListener(MemoryPressureListener listener) {
8041

8142
@Override
8243
public void onTrimMemory(int level) {
83-
if (level >= TRIM_MEMORY_COMPLETE) {
84-
dispatchMemoryPressure(MemoryPressure.CRITICAL);
85-
} else if (level >= TRIM_MEMORY_BACKGROUND || level == TRIM_MEMORY_RUNNING_CRITICAL) {
86-
dispatchMemoryPressure(MemoryPressure.MODERATE);
87-
} else if (level == TRIM_MEMORY_UI_HIDDEN) {
88-
dispatchMemoryPressure(MemoryPressure.UI_HIDDEN);
89-
}
44+
dispatchMemoryPressure(level);
9045
}
9146

9247
@Override
@@ -97,7 +52,7 @@ public void onConfigurationChanged(Configuration newConfig) {
9752
public void onLowMemory() {
9853
}
9954

100-
private void dispatchMemoryPressure(MemoryPressure level) {
55+
private void dispatchMemoryPressure(int level) {
10156
// copy listeners array to avoid ConcurrentModificationException if any of the listeners remove
10257
// themselves in handleMemoryPressure()
10358
MemoryPressureListener[] listeners =
@@ -106,8 +61,4 @@ private void dispatchMemoryPressure(MemoryPressure level) {
10661
listener.handleMemoryPressure(level);
10762
}
10863
}
109-
110-
private static void simulateTrimMemory(Application application, int level) {
111-
application.onTrimMemory(level);
112-
}
11364
}

ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,8 @@
99

1010
package com.facebook.react.bridge;
1111

12-
import javax.annotation.Nullable;
13-
14-
import java.lang.ref.WeakReference;
15-
import java.util.ArrayList;
16-
import java.util.Collection;
17-
import java.util.concurrent.CopyOnWriteArrayList;
18-
import java.util.concurrent.atomic.AtomicInteger;
19-
2012
import android.content.res.AssetManager;
2113
import android.util.Log;
22-
2314
import com.facebook.common.logging.FLog;
2415
import com.facebook.infer.annotation.Assertions;
2516
import com.facebook.jni.HybridData;
@@ -33,6 +24,12 @@
3324
import com.facebook.react.common.annotations.VisibleForTesting;
3425
import com.facebook.systrace.Systrace;
3526
import com.facebook.systrace.TraceListener;
27+
import java.lang.ref.WeakReference;
28+
import java.util.ArrayList;
29+
import java.util.Collection;
30+
import java.util.concurrent.CopyOnWriteArrayList;
31+
import java.util.concurrent.atomic.AtomicInteger;
32+
import javax.annotation.Nullable;
3633

3734
/**
3835
* This provides an implementation of the public CatalystInstance instance. It is public because
@@ -396,11 +393,11 @@ public Collection<NativeModule> getNativeModules() {
396393
private native void jniHandleMemoryPressure(int level);
397394

398395
@Override
399-
public void handleMemoryPressure(MemoryPressure level) {
396+
public void handleMemoryPressure(int level) {
400397
if (mDestroyed) {
401398
return;
402399
}
403-
jniHandleMemoryPressure(level.ordinal());
400+
jniHandleMemoryPressure(level);
404401
}
405402

406403
/**

ReactAndroid/src/main/java/com/facebook/react/bridge/MemoryPressureListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@ public interface MemoryPressureListener {
1010
/**
1111
* Called when the system generates a memory warning.
1212
*/
13-
void handleMemoryPressure(MemoryPressure level);
13+
void handleMemoryPressure(int level);
1414

1515
}

0 commit comments

Comments
 (0)