2013-07-26 2 views
0

단추 목록이있는 메뉴로 응용 프로그램을 개발 중입니다.이 단추 중 하나를 클릭하면 다른 활동 (각 단추에 대해 다른 이미지와 동일한 활동)이 열리고 이미지보기가 표시됩니다. 문제는 여러 단추 (여러 이미지 열기)에서 여러 번 클릭하면 앱이 다운되고 해결할 수 없다는 것입니다. 어떤 도움이 필요합니까? 감사.메모리 부족 imageview

+0

당신은 어떤 플랫폼이 (나는 안드로이드에 있기 때문에 Out of Memory가 안드로이드에서 일반적이기 때문에)라고 말하면됩니다. 다른 것들은 때로는 메모리 부족의 왕이 무엇인지에 대한 예외를 추가하는 것이 필요합니다. 나는 이미지 android 문제에 대한 귀하의 질문에 대답 해 드리겠습니다. –

+0

예, 플랫폼이 Android이고, "비트 맵 크기가 VM 예산을 초과합니다"라는 예외는 아닌데, 에뮬레이터가 아닌 장치에서 응용 프로그램을 실행할 때 Eclipse에서 오류를 표시하는 방법은 무엇입니까? 문제는 HTC Desire 기기에서 발생하며 Nexus 4 앱은 훌륭하게 작동합니다. –

+0

내가 게시하고 가장 일반적인 OutOfMemory 오류를 해결하기 위해 답변하지만, 귀하의 구체적인 사건은, 당신은 다른 게시물을 여기에 부딪 칠 수 있습니다 여기에 stackoverflow this (1) http://stackoverflow.com/questions/477572/strange-out-of -memory-issue-while-loading-image-to-a-bitmap-object/823966 # 823966 또는 thise (2) http://stackoverflow.com/questions/477572/strange-out-of-memory-issue 이미지를 비트 맵 객체로로드하는 중 기본적으로 비트 맵을 만들 때 문제가 발생합니다. –

답변

1

당신이보기에 많은 이미지를 사용하고 결코 메모리를 정리하지 않았기 때문에 그 문제가 발생했습니다. 그런 다음 새로운 순간에 대한 더 많은 메모리가없는 순간이 있습니다.

이 문제를 해결하는 한 가지 방법은 메모리를 항상 파괴하고 활동을 청소하는 것입니다. 활동의 다음 메소드를 무시하여 메모리를 정리할 수 있습니다.

@Override 
    public void unbindDrawables(View view) { 
     if (view.getBackground() != null) { 
      view.getBackground().setCallback(null); 
     } 
     if (view instanceof ViewGroup) { 
      for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) { 
       unbindDrawables(((ViewGroup) view).getChildAt(i)); 
      } 
      ((ViewGroup) view).removeAllViews(); 
     } 
    } 

해당 방법은보기를 검토합니다.이 경우보기는 ImageView 및 ImageButton이됩니다. 마지막으로 onDestroy() 메서드에서이 메서드를 호출해야합니다 (해당 메서드도 재정의해야 함).

+0

그래, 해보고 대답 해. 고마워;) Gracias –

+0

안녕하세요, 다시 메서드를 구현하는 방법을 설명 할 수 있습니다 onDestroy() int 그의 사건과 때라고? –

+0

이 프로젝트의 PhotoviewAttacher 객체를 사용하고 있습니다 : https://github.com/chrisbanes/PhotoView/tree/master/sample 그리고 버튼을 클릭하면 새로운 Photoview attacher 객체가 생성됩니다. 귀하의 코드가 작동하지 않습니다, 나는 unbindDrawables 메서드를 재정의 할 수없고 왜 모르지만 뭔가가 응용 프로그램을 손상시킵니다. –