2013-03-22 2 views
0

drawable을 해제하고 활동의 수명주기를 관리하는 적절한 방법은 무엇입니까? 일부 메모리 관련 충돌이 나타나기 때문에 비트 맵을 지우려고합니다.onpause에서 배경 drawable 해제

내가 할 :

private static bitmap; 

    public void onResume() { 

      view.setBackgroundDrawable(new BitmapDrawable(getResources(),bitmap)); 

    } 

    public void onPause() { 
      view.setBackgroundDrawable(null); // What is the best way to do this? 
      bitmap.recycle(); 
      bitmap=null; 

    } 
+0

logcat에서 스택 추적이 있습니까? – Trinimon

+0

@Andre, 방금 큰 비트 맵으로 레이아웃을 부 풀릴 때 내 앱이 충돌하고있는 것을 보았습니다. 그래서 나는 비트 맵을 정리하고 깨끗하게 유지하는 가장 좋은 방법을 궁금해했습니다. – prostock

답변

1

이 올바른 방법입니다. 그러나 좀 더 조정할 수도 있습니다.

  1. 비트 맵을 null로 설정했지만 VM 가비지 수집은 이미 이미지를 다시로드하려고 할 때만 트리거 될 수 있습니다. 따라서 잠시 후에 : System.gc()을 사용하여 필요하다고 GC에 알릴 수 있습니다. 그러나 그것은 오는 것이 자랑스럽지 않습니다. 당신이 정말로 그것을 필요한 경우에만 XML android:largeHeap="true"를 사용 14+ API와

  2. . 이렇게하면 앱의 힙 크기가 증가합니다.

  3. 정말 큰 그림이 필요합니까? 그것들을 더 작게 만들고, 밀도에 의존적 인 코딩을 사용하십시오. 로드하기 전에 축소 해보십시오 ...

관련 문제