2014-03-27 3 views
1

Отказ от ответственности: Я прочитал около 20 существующих вопросов. К сожалению, ни одна из них не решила мою проблему.Android Bitmap recycling

У меня есть деятельность. Это действие получает битмап из глобального/статического класса C и устанавливает растровое изображение в ImageView. Когда действие завершено, и я пытаюсь открыть активность, я получаю исключение java.lang.RuntimeException: Canvas: trying to use a recycled bitmap. Я не звоню Bitmap.recycle() в любой момент. Кроме того, я не удалить ссылку растровый в классе C. Я попытался следующие, но они не работали:

  • вызов ImageView.setDrawingCacheEnabled(false)
  • Перед установкой растрового изображения для ImageView, сделать глубокую копию (с помощью метода Bitmap.copy())

Кроме того, я поставил несколько операторов журнала на протяжении всего жизненного цикла деятельности. Внутри onDestroy(), перед вызовом super.onDestroy() Я проверяю и удостоверяюсь, что битмап не перерабатывается (через Bitmap.isRecycled())

Как исправить эту проблему?

ответ

2

Преступник оказался RemoteControlClient.MetadataEditor.apply(), он называет recycle() для переданных ему растровых изображений.

0

У меня была аналогичная проблема с ImageViews при повторном открытии активности (например, после того, как экран проснулся). Проблема заключается не в самом Bitmap, а в ImageView. Мое решение состояло в том, чтобы установить setImageBitmap ImageView в значение null для функции onPause() и вызвать setImageBitmap (theBitmap) для функции onResume() активности.

+0

Пробовал тоже, к сожалению, не работает. – kolistivra