1 /* 2 * Copyright (C) 2006 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.content; 18 19 /** 20 * Extended {@link ComponentCallbacks} interface with a new callback for 21 * finer-grained memory management. 22 */ 23 public interface ComponentCallbacks2 extends ComponentCallbacks { 24 25 /** 26 * Level for {@link #onTrimMemory(int)}: the process is nearing the end 27 * of the background LRU list, and if more memory isn't found soon it will 28 * be killed. 29 */ 30 static final int TRIM_MEMORY_COMPLETE = 80; 31 32 /** 33 * Level for {@link #onTrimMemory(int)}: the process is around the middle 34 * of the background LRU list; freeing memory can help the system keep 35 * other processes running later in the list for better overall performance. 36 */ 37 static final int TRIM_MEMORY_MODERATE = 60; 38 39 /** 40 * Level for {@link #onTrimMemory(int)}: the process has gone on to the 41 * LRU list. This is a good opportunity to clean up resources that can 42 * efficiently and quickly be re-built if the user returns to the app. 43 */ 44 static final int TRIM_MEMORY_BACKGROUND = 40; 45 46 /** 47 * Level for {@link #onTrimMemory(int)}: the process had been showing 48 * a user interface, and is no longer doing so. Large allocations with 49 * the UI should be released at this point to allow memory to be better 50 * managed. 51 */ 52 static final int TRIM_MEMORY_UI_HIDDEN = 20; 53 54 /** 55 * Level for {@link #onTrimMemory(int)}: the process is not an expendable 56 * background process, but the device is running extremely low on memory 57 * and is about to not be able to keep any background processes running. 58 * Your running process should free up as many non-critical resources as it 59 * can to allow that memory to be used elsewhere. The next thing that 60 * will happen after this is {@link #onLowMemory()} called to report that 61 * nothing at all can be kept in the background, a situation that can start 62 * to notably impact the user. 63 */ 64 static final int TRIM_MEMORY_RUNNING_CRITICAL = 15; 65 66 /** 67 * Level for {@link #onTrimMemory(int)}: the process is not an expendable 68 * background process, but the device is running low on memory. 69 * Your running process should free up unneeded resources to allow that 70 * memory to be used elsewhere. 71 */ 72 static final int TRIM_MEMORY_RUNNING_LOW = 10; 73 74 75 /** 76 * Level for {@link #onTrimMemory(int)}: the process is not an expendable 77 * background process, but the device is running moderately low on memory. 78 * Your running process may want to release some unneeded resources for 79 * use elsewhere. 80 */ 81 static final int TRIM_MEMORY_RUNNING_MODERATE = 5; 82 83 /** 84 * Called when the operating system has determined that it is a good 85 * time for a process to trim unneeded memory from its process. This will 86 * happen for example when it goes in the background and there is not enough 87 * memory to keep as many background processes running as desired. You 88 * should never compare to exact values of the level, since new intermediate 89 * values may be added -- you will typically want to compare if the value 90 * is greater or equal to a level you are interested in. 91 * 92 * <p>To retrieve the processes current trim level at any point, you can 93 * use {@link android.app.ActivityManager#getMyMemoryState 94 * ActivityManager.getMyMemoryState(RunningAppProcessInfo)}. 95 * 96 * @param level The context of the trim, giving a hint of the amount of 97 * trimming the application may like to perform. May be 98 * {@link #TRIM_MEMORY_COMPLETE}, {@link #TRIM_MEMORY_MODERATE}, 99 * {@link #TRIM_MEMORY_BACKGROUND}, {@link #TRIM_MEMORY_UI_HIDDEN}, 100 * {@link #TRIM_MEMORY_RUNNING_CRITICAL}, {@link #TRIM_MEMORY_RUNNING_LOW}, 101 * or {@link #TRIM_MEMORY_RUNNING_MODERATE}. 102 */ onTrimMemory(int level)103 void onTrimMemory(int level); 104 } 105