발생 원인!!
이미지 버튼만 4개를 만든 페이지에서 계속 메모리 누수가 발생하여... 4~5번 실행하면 실행이 되지 않고
오버 플로우가 발생!!!!
메모리가 누수되었을 경우 확인 부분
1. 전역변수나 클래스로 불러온 bitmap을 recycle함수로 초기화 시켰는지 확인
2. Context는 되도록 applicationContext를 사용하도록
3. 바로 이걸 하세요!!
/*
* Copyright (C) 2010 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ImageView;
/**
* @author givenjazz
*
*/
public class RecycleUtils {
private RecycleUtils(){};
public static void recursiveRecycle(View root) {
if (root == null)
return;
root.setBackgroundDrawable(null);
if (root instanceof ViewGroup) {
ViewGroup group = (ViewGroup)root;
int count = group.getChildCount();
for (int i = 0; i < count; i++) {
recursiveRecycle(group.getChildAt(i));
}
if (!(root instanceof AdapterView)) {
group.removeAllViews();
}
}
if (root instanceof ImageView) {
((ImageView)root).setImageDrawable(null);
}
root = null;
return;
}
}
화면에 남겨 있는 view들을 찾아 모두 초기화 시켜주는 클래스 입니다.!!
참조 : http://givenjazz.tistory.com/48
사용법은
@Override
protected void onDestroy() {
RecycleUtils.recursiveRecycle(getWindow().getDecorView());
System.gc();
super.onDestroy();
}
Destroy함수에 추가만 해주세요!!!!!
위 클래스 정말 효율적입니다.^^
바로써보시길~
그럼 즐 코딩~
'나의 플랫폼 > 안드로이드' 카테고리의 다른 글
[ Kernel ] system 디버깅 (0) | 2012.09.18 |
---|---|
[ Kernel ] System call 추가 방법 ( ICS ) (0) | 2012.09.18 |
[ Android ] 카메라 줌 기능 (0) | 2012.06.20 |
[ Android ] 버튼 이미지 변경 ( 코딩 ) (0) | 2012.06.20 |
[ Android ] Camera AutoFocus 사용법 (0) | 2012.06.14 |