1 /* 2 * Copyright (C) 2013 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 com.android.camera.app; 18 19 import java.util.HashMap; 20 21 /** 22 * Keeps track of memory used by the app and informs modules and services if 23 * memory gets low. 24 */ 25 public interface MemoryManager { 26 /** 27 * Classes implementing this interface will be able to get updates about 28 * memory status changes. 29 */ 30 public static interface MemoryListener { 31 /** 32 * Called when the app is experiencing a change in memory state. Modules 33 * should listen to these to not exceed the available memory. 34 * 35 * @param state the new state, one of {@link MemoryManager#STATE_OK}, 36 * {@link MemoryManager#STATE_LOW_MEMORY}, 37 */ onMemoryStateChanged(int state)38 public void onMemoryStateChanged(int state); 39 40 /** 41 * Called when the system is about to kill our app due to high memory 42 * load. 43 */ onLowMemory()44 public void onLowMemory(); 45 } 46 47 /** The memory status is OK. The app can function as normal. */ 48 public static final int STATE_OK = 0; 49 50 /** The memory is running low. E.g. no new media should be captured. */ 51 public static final int STATE_LOW_MEMORY = 1; 52 53 /** 54 * Add a new listener that is informed about upcoming memory events. 55 */ addListener(MemoryListener listener)56 public void addListener(MemoryListener listener); 57 58 /** 59 * Removes an already registered listener. 60 */ removeListener(MemoryListener listener)61 public void removeListener(MemoryListener listener); 62 63 /** 64 * Returns the maximum amount of memory allowed to be allocated in native 65 * code by our app (in megabytes). 66 */ getMaxAllowedNativeMemoryAllocation()67 public int getMaxAllowedNativeMemoryAllocation(); 68 69 /** 70 * Queries the memory consumed, total memory, and memory thresholds for this app. 71 * 72 * @return HashMap containing memory metrics keyed by string labels 73 * defined in {@link MemoryQuery}. 74 */ queryMemory()75 public HashMap queryMemory(); 76 } 77