2014-03-27 5 views
1

면책 조항 : 20 개의 기존 질문을 읽었습니다. 불행히도 그들 중 누구도 내 문제를 해결하지 못했습니다.안드로이드 비트 맵 재활용

나는 활동이있다. 이 액티비티는 전역/정적 클래스 C에서 비트 맵을 가져오고 비트 맵을 ImageView으로 설정합니다. 활동이 완료되고 활동을 다시 열려고하면 java.lang.RuntimeException: Canvas: trying to use a recycled bitmap 예외가 발생합니다. 언제든지 Bitmap.recycle()으로 전화하지 않습니다. 또한, 나는 클래스 C에서 비트 맵 참조를 삭제하지 마십시오 나는 다음을 시도하지만 그들은 작동하지 않았다 : Bitmap.copy() 방법을 통해 깊은 복사 (ImageView에 대한 비트 맵을 설정하기 전에

  • 전화 ImageView.setDrawingCacheEnabled(false)
  • 을)

또한 활동 내역 전체에 걸쳐 일부 로그 문을 넣었습니다. 을 호출하기 전에 Bitmap.isRecycled()을 통해 비트 맵을 재활용하지 않았는지 확인하십시오.

이 문제를 해결하려면 어떻게해야합니까?

답변

2

범인은 RemoteControlClient.MetadataEditor.apply()으로 밝혀졌고, 전달 된 비트 맵에 대해 recycle()을 호출합니다.

0

활동을 다시 열 때 (예 : 화면이 깨어 난 경우) ImageViews와 비슷한 문제가있었습니다. 문제는 Bitmap 자체가 아니라 ImageView에 있습니다. 내 솔루션은 ImageView의 setImageBitmap을 액티비티의 onPause()에서 null로 설정하고 액티비티의 onResume()에서 setImageBitmap (theBitmap)을 호출하는 것이었다.

+0

시도해 보니 불행하게도 작동하지 않습니다. – kolistivra