Почему растровое изображение перерабатывается после возвращения активности на передний план? - PullRequest
0 голосов
/ 25 января 2019

Моя активность A имеет переменную b, которая имеет ссылку на список растровых изображений:

A.b.bitmaps = new ArrayList<Bitmap>();

Список заполняется моим приложением, и последнее растровое изображение в списке отображается в ImageView для действия:

imgView.setImageBitmap(lastBitmap);

Затем я запускаю действие другого приложения для совместного использования в социальных сетях, но когда обмен завершен, и мое действие возвращается на передний план, мое приложение вылетает.

java.lang.RuntimeException: Canvas: trying to use a recycled bitmap android.graphics.Bitmap@15c6d7b
at ...

Растровое изображение lastBitmap. Я предполагаю, что это как-то выпущено и вылетает из приложения, когда используется для рисования imageView.

Почему он перерабатывается, когда и imageView, и моя переменная экземпляра имеют сильные ссылки на растровое изображение?

P.S. Я предполагаю, что сборка мусора как-то запускается при переключении приложений, и все растровые изображения перерабатываются. Тогда возникает вопрос, как я могу предотвратить повторное использование растрового изображения в GC? Что-то вроде Bitmap.disableRecycling()?

1 Ответ

0 голосов
/ 25 января 2019

Попробуйте использовать onSaveInstanceState и сохраните состояние всех переменных, которые необходимо сохранить, и восстановите их, используя onRestoreInstanceState .Надеюсь, что это отвечает на ваш вопрос.

...