From 27ff913d56de8400083a13fc572e2812b32c890c Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Tue, 6 Mar 2012 14:57:58 -0800 Subject: Work on more low memory reporting to apps. There are now some new trim memory levels that are sent to non-background applications as RAM becomes low. There is a new API for an application to retrieve information about memory trimming and such on demand. Fixed various checks against the memory trim level to be robust (not compare against exact values). Change-Id: Ifd1c6151124350168aef20a94e517166fd2e03eb --- core/java/android/view/WindowManagerImpl.java | 36 ++++++++++++--------------- 1 file changed, 16 insertions(+), 20 deletions(-) (limited to 'core/java/android/view/WindowManagerImpl.java') diff --git a/core/java/android/view/WindowManagerImpl.java b/core/java/android/view/WindowManagerImpl.java index d482b3561ba6..0e4a30f2af04 100644 --- a/core/java/android/view/WindowManagerImpl.java +++ b/core/java/android/view/WindowManagerImpl.java @@ -432,29 +432,25 @@ public class WindowManagerImpl implements WindowManager { */ public void trimMemory(int level) { if (HardwareRenderer.isAvailable()) { - switch (level) { - case ComponentCallbacks2.TRIM_MEMORY_COMPLETE: - case ComponentCallbacks2.TRIM_MEMORY_MODERATE: - // On low and medium end gfx devices - if (!ActivityManager.isHighEndGfx(getDefaultDisplay())) { - // Destroy all hardware surfaces and resources associated to - // known windows - synchronized (this) { - if (mViews == null) return; - int count = mViews.length; - for (int i = 0; i < count; i++) { - mRoots[i].terminateHardwareResources(); - } + // On low and medium end gfx devices + if (!ActivityManager.isHighEndGfx(getDefaultDisplay())) { + if (level >= ComponentCallbacks2.TRIM_MEMORY_MODERATE) { + // Destroy all hardware surfaces and resources associated to + // known windows + synchronized (this) { + if (mViews == null) return; + int count = mViews.length; + for (int i = 0; i < count; i++) { + mRoots[i].terminateHardwareResources(); } - // Force a full memory flush - HardwareRenderer.trimMemory(ComponentCallbacks2.TRIM_MEMORY_COMPLETE); - mNeedsEglTerminate = true; - break; } - // high end gfx devices fall through to next case - default: - HardwareRenderer.trimMemory(level); + // Force a full memory flush + HardwareRenderer.trimMemory(ComponentCallbacks2.TRIM_MEMORY_COMPLETE); + mNeedsEglTerminate = true; + return; + } } + HardwareRenderer.trimMemory(level); } } -- cgit v1.2.3