차근차근/Android

쌓여가는 static 해제,캐쉬 데이터 삭제 방법!

예쁜꽃이피었으면 2014. 7. 29. 00:43
전용뷰어 보기

http://kangshef.egloos.com/5402177

 

 

안녕하세요 쉪쉪 강쉪입니다.

오늘은 쌓여가는 static 변수의 해제 방법에 대해 알아보려 합니다.

일반적으로 static 변수를 사용하는 이유를 말씀 드리면 

어떤 클래스에서도 상관없이 어떤 패키지에서도 상관없이

아니 어디에서도 상관없이

Dalvik이 상주해 있다면 종료되기 전까지는 계속해서 상위에 머무르게 되는 데이터입니다.

다시 말하자면?

단말기를 종료하기 전까지는 없어지지 않는다는 뜻도 되겠습니다.

그러면 그게 잘 만든 App냐? 절대 아니죠

이 어플만 사용하면 느려진다? 절대 그럴 순 없습니다.

그래서 알려드립니다.

깨끗하게 해제하는 방법!




일단 static 변수의 해제부터 보겠습니다.


onDestroy()메소드를 삽입 해 줍니다.


 @Override
    public void onDestroy() {
        super.onDestroy();
    }

이런식으로 사용하시면 되겠습니다.

onDestroy()의 주 목적은 해당 액티비티가 파괴될때

실행되는 것으로 이 곳에 해제관련 문구를 써주면 문제없이 작동하게 됩니다.


System.exit(0);

그 안에 이렇게 쓰여집니다.


정말 간단하죠? ^^

static이라고 해봤자 얼마나 한다고... 라고 생각하지 마시고

많이 사용되는 곳에 한 문장만 써 주세요 ^^




두번째 쌓여가는 캐쉬 데이터 삭제 방법입니다.

2.1.1 이클레어 부터는 캐쉬데이터를 외장 메모리에 저장하게 되어있습니다.

그래서 캐쉬데이터 때문에 프로그램이 먹통이 되는 경우는 거의 없지만

그래도 깔끔한 어플리 케이션을 원한다면? 한번쯤 사용해 주는 편이 좋습니다.



private void clearApplicationCache(java.io.File dir){  //종료시 모든 캐쉬 삭제
        if(dir==null)
            dir = getCacheDir();
        else;
        if(dir==null)
            return;
        else;
        java.io.File[] children = dir.listFiles();
        try{
            for(int i=0;i<children.length;i++)
                if(children[i].isDirectory())
                    clearApplicationCache(children[i]);
                else children[i].delete();
        }
        catch(Exception e){}
    }

일단 이런 메소드를 생성해 줍니다.

보통은 메인 페이지나 종료가 가능한 페이지에 한번 정도 써 넣으시면 되겠죠? ^^
그 다음 onDestroy()에 메소드를 불러주면 ok!


clearApplicationCache(null);

이런식으로 사용하시면 되겠습니다.


정말 간단하죠?

^^

지금은 쌓여가는 액티비티와 힙메모리에 대해 조사하고 있는 중입니다.

그럼 다음에 뵙겠습니다!


반응형