CPU 및 Display의 Wake Lock을 쉽게 컨트롤 하는 방법은 아래와 같다.
사용하기 전에 initWakeLock으로 초기화를 해주고
acquireWakeLock/releaseWakeLock 으로 잠금/해제를 해주면 된다.
다 사용하고 나면 destroyWakeLock으로 최종 해제를 해주도록 한다.
아래 함수를 사용하면 자바 및 네이티브 힙의 크기 및 사용량을 체크할 수 있다.
DDMS에서 체크 가능한 Java Heap에는 문제가 없는데도 불구하고
OutOfMemoryError가 발생하면 이 함수를 이용해 Heap사용량을 먼저 체크하자.
// for check heap size
public static void logHeap(Class clazz) {
final int MEMORY_BUFFER_LIMIT_FOR_RESTART = 15;
Double allocated = new Double(Debug.getNativeHeapAllocatedSize())/new Double((1048576));
Double available = new Double(Debug.getNativeHeapSize())/new Double((1048576));
Double free = new Double(Debug.getNativeHeapFreeSize())/new Double((1048576));
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(2);
df.setMinimumFractionDigits(2);
// don't need to add the following lines, it's just an app specific handling in my app
/*
if (allocated>=(new Double(Runtime.getRuntime().maxMemory())/new Double((1048576))-MEMORY_BUFFER_LIMIT_FOR_RESTART)) {
android.os.Process.killProcess(android.os.Process.myPid());
}
*/
}